异常小总结

异常类的体系结构如下:

Throwable

|-Error

|-Exception

  |-IoExcetion

  |-SQLException

  |-RuntimeException

*派生与Error与RuntimeException(运行时异常)的异常叫未检查异常,不用程序员处理,直接虚拟机会进行处理,这也就是说程序本身的错误

  其他的异常叫做已检查异常,必须由程序员进行处理

常见的异常如下:

  类型转化异常  ClassCastException

  数组越界异常  ArrayIndexOutOfBoundsException

  空指针异常   NullPointerException

以上都是派生与RuntimeException

  文件尾读取数据异常      EOFException

  打开不存在的文件异常     FileNotFoundException

  查找不存在的Class对象异常   ClassNotFoundException   

*使用异常的4种情况:

  调用一个抛出已检查异常的方法

  程序运行过程中发生错误

  程序出现错误

  JAVA虚拟机和运行库出现内部错误

*throw与throws区别

throw用于抛出异常,throws用于声明异常,即在方法体后注明可能抛出的异常

*try catch字句

  *可以捕获多个异常

    try{}

    catch(e){}

    catch(e){}

    ....

  *可以合并异常

    try{}

    catch(e1 | e2){}  

  *catch子句可以再次抛出异常

    方式:一般把原始异常当作再次抛出异常的原因

    代码举例:

...
catch(e)
{
    Throwable se = new ServletException("data error");
    se.initCause(e);
    throw se;
}

    当捕获异常se后,可以利用如下代码获得原始异常

Throwable e = se.getCause();

*finaly子句

  当利用try catch抛出异常后,剩余代码不会执行,会停止程序,键入在程序终止之前会申请一些本地资源还未关闭,于是引入了finally子句。

  执行时刻:不管抛没抛异常,finally子句一定执行。

*带资源的try语句

  使用条件:所使用的资源类实现了一个AutoCloseable接口类,其中有个方法void close() throws Exception,这是JDK7中的特性

  形式:代码举例

try(Scanner in = new Scanner(new FileInputStream("/....")));
{
    while(in.hasNext())
        ....
}

  此中使用形式,确保发生任何情况发生异常都会被关闭

原文地址:https://www.cnblogs.com/fantasy01/p/3978379.html