Throwable
类是Java语言中所有错误和异常的类。 只有作为此类(或其一个子类)的实例的对象由Java虚拟机抛出,或者可以由Javathrow
语句抛出。1.使用 try和catch处理异常;认识异常的继承架构;了解 throw、throws的使用时机;
2.运用 finally关闭资源以及使用自动关闭资源语法;认识AutoCloseable接口。
目录
一、异常处理与继承架构
1.使用try…catch
在实际编程中,我们总会有一些意想不到的状况而引发程序错误,这是合理和允许的。在Java中,错误都会以对象方式呈现为java.lang.Throwable的各种子类实例,只要我们捕捉到这些对象就可以针对错误进行处理。比如进行程序修复、进行日志记录或是以某种形式反馈给用户。
使用try……catch语法,JVM就会尝试执行try区块中的程序代码,如果发生错误,就会跳离错误的发生点,去匹配catch括号中声明的类型,是否符合被抛出的错误对象类型,若是则执行区块代码。
如果抛出了Throwable,而程序没有任何catch捕捉到错误对象,最后由JVM捕捉到,那JVM基本处理就是显示错误信息并中断程序。
2.异常继承架构
在编写程序中,有一些程序如果不编写try…catch语句,就会编译错误,编译程序就一定要求你在程序中明确处理错误。那接下来我们就需要了解一下这个错误包装对象的继承架构,哪些异常一定要求处理。
首先这些错误对象都是可抛的,所以设计错误对象继承自java.lang.Throwable类,这个类会定义取得错误信息、堆栈追踪(Stack Trace)等方法,它有两个子类:java.lang.Error与java.lang.Exception。
其中,Error或其子类实例,代表系统的严重错误,比如硬件层面、JVM错误或者内存不足等等,虽然可以用异常语法处理但这类错误是Java应用程序无力解决的,只能任其到JVM或者留下日志信息。
而如果是程序设计产生的错误,则可以使用Exception或其子类实例表现,通常称错误处理为异常处理(Exception Handling)。
从语法与继承架构来看,Exception还分为java.lang.RuntimeException异常和其他异常。
对于其他这些异常都要必须明确使用try…catch语句加以处理,或是用throws声明抛出异常