发现异常必须抛出或捕获,这句话是对还是错?

发帖人:马育民       审核人:矫美

感谢:

洪鹏波

付新新


指正错误!

----------------------------------------------------------------------------------------------------


首先回答问题:

  1. 如果是运行时异常(非检查异常),可以捕获或抛出,也可以不处理,推荐不处理
  2. 如果是非运行时异常(检查异常),则必须处理,捕获或抛出,否则无法编译



=======以下是分析========



上图原地址: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、如果无法处理,就抛出。





原文出处:/show_1e1cdd8440a7421d8dd63f97365f15d6.html