关于Java异常最详细透彻的理解(1)
编译时异常throws原因
throws一个异常主要是告诉客户端程序员(方法调用者),你要对这个异常进行处理(try catch),处理不了就继续往上抛。
而运行时异常(程序逻辑本身有缺陷)之所以不需要throws,是因为不要求方法调用者处理
捕获运行时异常只是让程序自上而下跳过了异常代码正常执行完毕,但是发生异常的代码却并没有执行,这样做虽然使得程序能够执行完毕,但并没有让程序合乎设计要求的执行。当然如果只是为了能够让程序不至于发生崩溃,实现部分功能,采取捕获运行时异常这种措施也是可以的,这是捕获运行时异常的意义。
Java的编译器并没有强制要求对运行时异常进行处理,一切取决于程序员自己想实现的业务逻辑,如果你想让程序无论如何都能自上而下执行一遍,至少实现部分功能,那么选择try catch。如果想让程序暴露逻辑错误终止异常处运行,那么则不用捕获,让jvm自动throws即可