Q:Exception和Error有什么区别,运行时异常和一般异常有什么区别?
Exception和Error都是继承了Throwable类,在Java中只有java.lang.Throwable类的实例,才能被throw或catch,它是异常处理机制的基本组成。
Exception和Error体现了Java平台设计者对不同异常情况的分类。Exception是可以预料到得到异常情况,应该被捕获,并进行相应处理。Error是指不大可能出现的情况,绝大部分Error会导致JVM自身处于不正常的不可恢复状态。无法被捕获,和处理。
Exception又可分为可检查异常和不检查异常。不检查异常又被成为运行时异常,通常是可以编码避免的逻辑错误,比如NullPointerException、ArrayIndexOutOfBoundsException等。

异常处理机制的性能开销
- try-catch代码段会影响JVM对代码进行优化。因此建议仅捕获有必要的代码,而不要用一个大的try包住整段代码。
- Java每实例化一个Exception,都会对当时的栈进行快照。如果进行频繁操作,这个开销将不能被忽略。
一个扩展
不同的编程范式,会影响到异常处理策略。比如反应式编程,本身是异步、基于事件的,所以出现异常不能简单抛出去。
网友评论