Java 中的异常
- Java中的异常体系
- Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类。
- Error错误,一般是指与虚拟机有关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断。通常应用程序无法处理这些错误,因此应用程序不应该试图使用catch块来捕获Error对象。在定义该方法时,也无须在其throws子句中声明该方法可能抛出的Error及其任何子类。对于这类错误,Java编译器不去检查他们。对于这类错误导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。
- Exception异常表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
- Exception又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception )。
- RuntimeException:其特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try……catch捕获,也没有用throws抛出,还是会编译通过,如除数为零的ArithmeticException、错误的类型转换、数组越界访问和试图访问空指针等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。
- 受检查的异常(IOException等):这类异常如果没有try……catch也没有throws抛出,编译是通不过的。这类异常一般是外部错误,例如文件找不到、试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。
- Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类。
- 常见的异常
- ArithmeticException:算数运算异常
- ArrayIndexOutOfBoundsException:数组越界异常
- ClassCastException:类型转换异常
- NullPointerException:空指针异常
- NumberFormatException:数据格式异常
- FileNotFoundException:文件未找到异常
- ClassNotFoundException:类未找到异常
- NoSuchElementException:没有这个元素异常(迭代器中到了末尾,还继续访问)
常见的RuntimeException异常
1、NullPointerException -- 空指针引用异常
2、ClassCastException -- 类型强制转换异常
3、IllegalArgumentException -- 传递非法参数异常
4、ArithmeticException -- 算术异常
5、ArrayStoreException -- 向数组中存放与声明类型不兼容对象异常
6、IndexOutOfBoundsException -- 下标越界异常
7、NegativeArraySizeException -- 创建一个大小为负数的数组错误异常
8、NumberFormatException -- 数字格式异常
9、SecurityException -- 安全异常
10、UnsupportedOperationException -- 不支持的操作异常