Java异常的续承层次结构

异常的分类,什么时候try catch什么时候throw

 

 

RuntimeException类似秒杀未开始 秒杀已结束这类的 (-->运行期异常,不用try catch ,可以回滚)

功能内部如果出现异常,如果内部可以处理,就用try;如果功能内部处理不了,就必须声明出来,让调用者处理。使用throws抛出,交给调用者处理。谁调用了这个功能谁就是调用者;https://bbs.****.net/topics/392179591?page=1

Java异常的续承层次结构

图片来自 https://blog.****.net/u010700335/article/details/41143111

(1)粉红色的是非运行时异常是RuntimeException以外的异常,即受检查的异常(checkedexceptions),其必须被try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,

 

(2)绿色的异常是运行时异常(runtime exceptions ),即不检查异常((编译器不要求强制处置的异常)),都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。...而声明为Error的,则属于严重错误(OOM SOF),是程序无法处理的,大部分运行时为JVM出现问题。