对Java中的异常理解
摘要
极客时间里的Java核心技术系列,第2讲,记录一些笔记。
关键词:Throwabel,Error,Exception,Unchecked,Checked,日志。
概述
我们需要依靠异常处理机制来处理一些可能发生的意外情况,来保证程序的可靠性和健壮性。
Java 里异常处理机制由 Throwable 类完成。他包括了 Error 和 Exception。 具体看下图:
2条基本原则
我们在对异常进行处理时,有2条基本原则。
- 尽量不要去捕获Exception这样范围很大的异常类,而应该去捕获特定的异常类。
否则我们都不知道是什么异常抛出了,我们该怎么解决。对异常的信息可以保留到日志里面。 - 不要生吞(swallow)异常。
也就是不要试着去隐藏一个异常,不要去掩盖异常。
不知道如何处理的话,先保留原有异常的cause信息,再抛出去,在更高的层面上往往会有清晰的思路来解决。
其他
- 仅对必要的代码进行try-catch,因为这样产生额外的开销。
- 每实例化一个Exception,都会对当时的栈进行一个快照,保存现场的信息。
- try-with-resources 语句。
这是JDK1.7引入的语法。不用我们自己书写 关闭资源 的代码。
但是资源必须实现 AutoClosable接口,实现类重写close方法。