java中的异常处理


异常体系结构

 |--Throwable
  |--Error
  |-Exception
  	|-RuntimeException
  		|-NullPointerException
  		|-ClassCastException
  	|-IOException

说明

  • Throwable是所有异常的祖先
  • Error是错误,通常我们不需关注,也没法处理,如StackOverflow和OOM
  • Exception规定的程序本身可以处理的异常

Exception分类

  1. checked exception

可检查的异常,除去RuntimeException及其子类,均为可检查时异常,如IOException,需要处理。
2. unchecked exception

RuntimeException及其子类均为不可检查的异常,运行时发生的异常,不可预测,很有
可能是我们代码本身写的有问题,比如除去0,空指针,或者强制类型转换时出了问题

异常处理

代码中的异常处理是对可检查异常的处理,这也是为什么自定义一个RuntimeException异常不需
要处理的原因。

  1. 通过try-catch块处理
  2. throw抛出交给上层处理
    注意区分throw与throws

throw关键字,主动产生抛出一个异常,若抛出了可检查的异常,则需要处理(try-catch或throws) 记忆:没s,他还小,放在方法体里面
throws关键字放在方法签名的尾部(对应的是try-catch) 记忆:有s,长大了,放在外面

注意

子类重写的方法抛出的异常类型不大于父类被重写方法抛出的异常类型