1.子类覆盖父类方法时,子类抛出的异常只能是父类的异常集合的子集,或者子类不抛异常;
2.异常结构:
Throwable
|
----Error(错误:OutOfMemeryError、NoClassDeFoundError等)
----Exception(异常:包含RuntimeException这种非编译期检查异常和非RuntimeException这种检查异常)
|
----RuntimeException(编译期不报错,运行时报错;这种异常可以不throws或try/catch;也可以捕获或抛出)
----IOException(非RuntimeException,编译期报错)
----SqlException(非RuntimeException)
|
----IndexOutOfBoundsException(RuntimeException)
----NullPointerException(RuntimeException)
3.不自定义检查异常,即自定义异常一般应继承RuntimeException;
4.RuntimeException如果没有处理,jvm会停止程序,并抛出错误信息;
5.try和finally可以单独搭配使用,不含catch;
6.可以在catch块中转换异常;
7.若程序中有,system.exit(0);这是jvm停止;finally将执行不到;
8.一般Error、Exception可以转成自定义的RuntimeException;
参考: