谈谈你对Exception 和 Error的理解
1. 审题
此题面试官主要想考察你对Java异常处理机制的理解,答题的思路可以从以下几个方面切入
- Exception 和 Error的共性。
- Exception 和 Error的差异。
- 针对 Exception 详细谈谈。
- 针对 Error 详细谈谈。
2. 面试现场
2.1. Exception 和 Error 的共性
Exception 和 Error 都继承了Throwable类。Throwable类的实例才能被程序处理(throw catch)。
2.2 Exception 和 Error 的差异
Exception 从字面意思讲,指的是程序运行过程中,能被处理的情况,是在预期范围内的。
Error指的是程序运行过程中,不太可能出现的情况,而且很有可能导致程序挂掉。
2.3 详细谈谈Exception
Exception 又分为cheked exception 和 unchecked exception。
checked exception 指的是在源代码里必须处理的异常。例如:
- IOException
unchecked exception 指的是不用在源代码里处理,为运行时异常。例如:
- NullPointerException
- ClassCastException
2.4 详细谈谈Error
绝大数的Error会导致程序处于非正常状态。例如:
- NoClassDefFoundError
- OutOfMemoryError
- StackOverflowError
2.5 异常使用的建议
- 不要用try catch 包裹住一大段代码,这样会产生额外的开销。例如异常来控制代码流程,比if else switch 等低效的多。
- Java 每实例化一个Exception就会对栈进行快照,这样会带来一定的性能开销。