异常处理机制主要回答了3个问题
- What:异常类型回答了什么被抛出
- Where:异常堆栈跟踪回答了在哪抛出
- Why:异常信息回答了为什么被抛出
java的异常体系
Error:程序无法处理的系统问题,一般与JVM相关,编译器不做检查,如:系统奔溃,虚拟机错误,系统内存不足,调用栈溢出。
Exception:程序可以处理的异常,可以被程序捕获、处理和恢复。
常见的Error以及Exception
RuntimeException
- NullPointerException:调用空对象的方法或属性
- ClassCastException:将某个实例赋值给非父类对象
- IllegalArgumentException:给方法传递了不满足要求的参数(个数或类型)
- IndexOutOfBoundsException:数组下标异常
- NumberFormatException:试图将一个字符串转换为指定数字类型,而该字符串确实不满足该数字类型
非RuntimeException
- ClassNotFoundException-找不到指定class的异常
- IOException-IO操作异常
Error
- NoClassDefFoundError-找不到class定义的异常,原因:
- 类依赖的class或者jar不存在(e.g. maven中漏引了某个jar包)
- 类文件存在,但是存在不同的域中
- 大小写问题,javac编译的时候是无视大小写的,很有可能编译出来的class文件就与想要的不一样
- StackOverFlowError-深递归导致栈被耗尽而抛出的异常
- OutOfMemoryError-内存溢出异常
java的异常处理机制
java异常的处理原则
高效主流的异常处理框架
try-catch的性能