异常分类图解:
Throwable
|--Error 严重问题,我们不处理。
|--Exception
|--RuntimeException 运行期异常,我们需要修正代码
|--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
异常对象的常见方法:
如果程序需要在catch块中访问对象的相关信息,则可以通过访问catch块后的异常形参来获得。当java运行时决定调用某个catch块来处理该异常对象时,会将异常对象赋给catch块后的异常参数,程序即可通过该参数来获得异常相关信息。
getMessage():返回该异常的详细描述字符串
printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。
printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到标准错误输出。
getStackTrace():返回该异常的跟踪栈信息。
finally的特殊情况:
通常情况下,不要在finally块中使用如return或者throw等导致方法终止的语句。
当java程序执行try块、catch块时遇到了return或者throw语句。这两个语句都会导致该方法立即结束,但是系统执行这两个语句并不会结束该方法,而是去寻找该异常处理流程中是否包含finally块,如果没有finally块,程序立即执行return或throw语句,方法终止。如果有finally块,系统立即开始执行finaly块----只有当finally块执行完成后,系统才会再次跳回来执行try块、catch块里的retrun或throw语句;如果finally块里也使用了return或throw等导致方法终止的语句,finally块一斤终止了方法,系统将不会跳回去执行try块、catch块里的任何代码。
自定义异常
继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可