[面试经]Java中的Exception和Error有什么区别?

Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才能够被抛出(throw)或者捕获(catch),他是异常处理机制的基本组成类型。编码

Exception是程序正常容许中,能够预料的意外状况,可能而且能够捕获,进行相应处理。设计

Exception又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。不检查异常就是所谓的运行时异常,相似NullPointerException、ArrayIndexOutOfBoundsException之类,一般是能够编码避免的逻辑错误,具体根据须要判断是否须要捕获,并不会在编译器强制要求。日志

Error是指在正常状况下,不大可能出现的状况,绝大部分的Error都会致使程序处于非正常的不可恢复的状态。既然是非正常状况,因此也不便于也不须要捕获,常见的好比OutOfMemoryError,都是Error的子类。blog

考察重点 继承

1) 理解Throwable、Exception、Error的设计很分类,好比掌握那些应用最为普遍的子类,以及如何自定义异常等。接口

2) 理解Java语言中操做Throwable的元素和实践,掌握最基本的语法是必须的,好比try-catch-finally块,throw、throws关键字等。资源

Java 7中try with resource,若是资源属于一个实现了AutoCloseable接口的类,try块结束时,会自动调用res.close(). 就好像是使用了finally块同样。编译器

异常处理的基本原则:a. 尽可能不要捕获相似Exception这样的通用异常,而是应该捕获特定异常。 b. 不要生吞异常。c. 也不要常用printStackTrace(),在复杂的系统里,很难判断到底输出到哪里去了。因此最好使用产品日志,详细地输出到日志系统里面。产品

 

另附常见异常it

常见运行时异常:

 

常见非运行时异常:
 

 

相关文章
相关标签/搜索