zoukankan      html  css  js  c++  java
  • Java异常

    异常:有异于常态,跟正常形态不一样,有错误。阻止当前方法和作用域。

    Exception也就是所说的异常。是由于编码、环境、用户操作输入出现问题


    try……catch捕获并处理异常


    抛出异常的代码会终止执行,程序的控制权交由catcha块中的异常处理代码

    例如:

    若输入的类型不是整数的话会出现输入类型不匹配异常,catch代码块会执行,输出“你应该输入整数!!!”,接着后面的代码会继续执行

    若try抛出多种类型异常?

    注意:catch中要按照子类到父类的顺序(也就是先捕获小异常,再捕获大异常),不然会出现错误,如下图

    以下情况是顺序错误的:

    try....catch...finally

    finally来实现资源回收,如关闭连接、磁盘文件等啊

    注:一旦在finally块中使用了return或throw语句,将会导致try块catch块中的return,throw语句失效

    常见异常类型


    IndexOutofBoundsException:数组越界异常
    NumberFormatException:数字格式异常
    ArithException:算术异常,比如除数为0

    访问异常信息

    getMessage():返回该异常的详细描述字符串
    printStackTrace():将该异常的跟踪栈信息输出到标准错误输出
    printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流
    getStackTrace():返回该异常的跟踪栈信息

    抛出异常


    一旦使用throws语句声明异常,程序就无须使用try...catch来捕获异常了

    自定义异常

    如果希望自定义runtime异常,则应继承RuntimeException基类,定义异常要提供两个构造器:一个是无参数的构造器;一个是带一个字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也是异常对象的getMessage()方法的返回值)

    如:

    public class AuctionException extends Exception{
       //无参数的构造器
      public AuctionException(){}//1
    //带一个字符串参数的构造器 public AuctionException(String msg){//2 super(msg);//通过super调用父类构造器,将此字符串参数传给异常对象的message属性,该message属性就是该异常对象的详细描述信息。
       } 
    }

      异常链

      异常链:把捕获的异常包装成一个新的异常,然后在新的异常里添加对原始异常的引用,再把这个新异常抛出,链式反应一样,一个导致另一个


    在JDK 1.4以后,所有Throwable的子类在构造器中都可以接收一个cause对象作为参数。这个cause就用来表示原始异常,这样可以把原始异常传递给新的异常,使得即使在当前位置创建并抛出了新的异常,你也能通过这个异常链追踪到异常最初发生的位置。

    总结

  • 相关阅读:
    USACO Meteor Shower
    小技巧—取模防负
    CSP-S2019 D2T1 Emiya家今天的饭
    重谈DFS序、时间戳和欧拉序
    JDOJ 1842 Magictree
    CSP-S2019 D1T1 格雷码
    洛谷 P3919 【模板】可持久化线段树 1(可持久化数组)
    node+express api编写实战(一):环境安装及启动
    宝塔pureftpd设置FTP后,可连接,但无法上传、新建、覆盖文件的解决方法
    flex布局、css3选择器
  • 原文地址:https://www.cnblogs.com/WFM1997/p/9157348.html
Copyright © 2011-2022 走看看