常见的RuntimeException
- NullPointerException - 空指针引用异常
- ClassCastException - 类型强制转换异常
- IllegalArgumentException - 传递非法参数异常
- IndexOutOfBoundsException - 下标越界异常
- NumberFormatException - 数字格式异常
常见的非RuntimeException
- ClassNotFoundException - 找不到指定class的异常
- IOException - IO 异常
Error
- NoClassDefFoundError - 找不到class定义的异常
- StackOverflowError - 深递归导致的栈被耗尽而抛出的异常
- OutOfMemoryError - 内存溢出异常
注意
finally 会在 return 之前执行
Error和Exception的联系
- Error和Exception都是继承throwable,RuntimeException继承Exception
- Error和Exception及其子类称为未检查异常(Unchecked exception),其他异常称之为 受检查异常(checked exception)
Error和Exception的区别
- error 是在正常情况下不太可能会出现,绝大部分的error都会导致程序处于不可处理,不可恢复的情况 , 这种不可能会被捕捉到。 ps:OutOfMenoryError,NoClassDefFoundError 等
- exception 是java程序在运行时可预料的异常情况,我们可以捕捉这样的异常,这种异常又分为检查性异常和非检查性异常,检查性异常在编写代码的时候,需要使用try/catch进行捕获处理,非检查性异常,在代码进行编写时,可以忽略捕获操作,可以进行避免的。