Error是程序无法处理的错误,Exception是程序可以处理的异常,异常分为两类,运行时异常和编译异常。
异常类型
运行时异常
都是RuntimeException类及其子类,例如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
常见运行时异常
异常 | 描述 |
---|---|
ArrayIndexOutOfBoundsException | 数组索引越界异常 |
ArithmeticException | 算术条件异常。譬如:整数除零等 |
SecurityException | 安全性异常 |
IllegalArgumentException | 非法参数异常 |
ArrayStoreException | 数组中包含不兼容的值抛出的异常 |
NegativeArraySizeException | 数组长度为负异常 |
NullPointerException | 空指针异常 |
编译异常
是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常。
异常 | 描述 |
---|---|
IOException | 操作输入流和输出流时可能出现的异常 |
EOFException | 文件已结束异常 |
FileNotFoundException | 文件未找到异常 |
ClassCastException | 类型转换异常类 |
SQLException | 操作数据库异常类 |
IllegalAccessException | 不允许访问某类异常 |
ClassNotFoundException | 找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。 |
异常处理
抛出异常
throw new RuntimeException("异常了.....");
捕捉异常
try {
}catch (Exception e){
e.printStackTrace();
}finally {
}