异常处理

异常是否要处理

运行时异常是RuntimeException类及其子类的异常,是非受检异常,
如NullPointerException、IndexOutOfBoundsException等。由于这类异常要么是系统异常,无法处理,如网络问题;
要么是程序逻辑错误,如空指针异常;JVM必须停止运行以改正这种错误,所以运行时异常可以不进行处理(捕获或向上抛出,当然也可以处理),而由JVM自行处理。Java Runtime会自动catch到程序throw的RuntimeException,然后停止线程,打印异常。

非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类,是受检异常。
非运行时异常必须进行处理(捕获或向上抛出),如果不处理,程序将出现编译错误。一般情况下,API中写了throws的Exception都不是RuntimeException。

总结

即所有的异常都要捕获,受检异常默认捕获,不然不编译通过。
非受检异常非逻辑问题外是不可控的。尽量捕获,如果不能捕获,则会出现问题,停止程序。

0%