发帖人:马育民 审核人:矫美
感谢:
洪鹏波
付新新
指正错误!
----------------------------------------------------------------------------------------------------
首先回答问题:
- 如果是运行时异常(非检查异常),可以捕获或抛出,也可以不处理,推荐不处理
- 如果是非运行时异常(检查异常),则必须处理,捕获或抛出,否则无法编译
=======以下是分析========
上图原地址:http://www.cnblogs.com/dolphin0520/p/3769804.html
一、Unchecked exception(Runtime Exception)
非检查异常,也叫运行时异常。
这类异常都是由程序内部原因造成的,是可以避免的。对于这类异常可以忽略他们,但一旦发生程序就会异常终止。
RuntimeException类是Exception类的子类,它叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类。
可以对其进行处理,也可以不处理。推荐不对运行时异常进行处理
二、Checked Exception(非Runtime Exception)
检查异常,也叫非运行时异常。
Java中凡是继承自Exception,而不继承RuntimeException类的异常都是非运行时异常。表示“无法避免的异常”, 如io异常,往往这类异常是由于外部原因造成的。程序本身无法保证他们不发生,所以这类异常必须捕获。
对于非运行时异常(checked exception),必须要对其进行处理,否则无法通过编译。
三、处理原则
1、如果知道如何处理就处理
2、如果无法处理,就抛出。