-
异常类最上层的类是Throwable,它是java.lang包中的一个类。该类派生了两个子类java.lang.
Error和java.lang.Exception。Error子类由系统保存。 -
Exception有两个构造方法:
public Exception();
public Exception(String s); -
程序对错误与异常的处理方式有三种:一是程序不能处理的错误,二是程序应避免而可以不去捕捉的运行时异常,三是必须捕获的非运行时异常
-
catch括号中的异常类型应对应所产生的异常类或该异常的祖先类
-
如果所有catch块都不能匹配当前的异常对象,程序流程将返回调用该方法的上层方法。如果所有方法都找不到合适的catch块,则由java运行系统来处理这个异常对象。
-
一般将较常见的异常catch块放在前面,与多种异常相匹配的catch块放在后面。若将子类异常的catch语句块放在父类异常catch块的后面,则编译不能通过。
-
finally块可以被省略。
-
当catch块中含有System.exit(0)语句时,则不执行finally块中的语句,程序直接终止,
但当catch块中含有return语句时,则执行完finally块中的语句再终止程序, -
抛出异常的两种方法①在方法体内用throw语句 ②在方法头部添加throws子句
-
自动资源管理语句 try-with-resources包含了隐式的finally语句
如果try-with-resources语句后有catch和finally子句,则catch 和finally子句在资源关闭之后得到调用。 -
自定义的异常类必须是Throwable的直接或间接子类。
-
自定义异常不能由系统自动抛出,因此必须借助于throw语句来定义何种情况产生了错误,并抛出。
-
非运行时异常必须捕捉并处理,而对运行时异常则不必。
-
IOException一定要捕获处理
-
自动关闭资源语句try-with-resource,只能关闭实现java.lang.AutoCloseable接口的资源