Throwable是所有异常的父类,Throwable的父类是Object。
Throwable的子类有两个,Error和Exception
Exception的子类有两个,RuntimeException和其他Exception
1、Error会在程序编译的时候异常,不需要去手动catch。比如,你突然写了一个 123 在程序中,不是变量也不是方法,开发工具都会提示你写的有问题,你要是硬去编译,好,Error就有了。
public class ExceptionDemo {
public static void main(String[] args) {
123
}
}
运行结果
Error:(5, 9) java: 不是语句
Error:(5, 12) java: 需要';'
2、RuntimeException
运行时异常,也是不受检查的异常,所以在编译的时候不会报错,最经典的 NullPointerException,还有一些其他的比如ClassCastException、NumberFormatException、IndexOutOfBoundsException、ArrayIndexOutOfBoundsException、StringIndexOutOfBoundsException等
这种异常信息在写代码的时候不需要特意的去try catch,当然,你要是想自己抛出指定的错误码和错误描述的话得自己加上try catch。如果你不写处理的话java会自己处理抛异常,就是有点不好看
public static void checkException() throws IOException {
throw new IOException();
}
public static void unCheckException() {
throw new NullPointerException();
}
public static void main(String[] args) {
try {
//必须try catch
checkException();
} catch (Exception e) {
e.printStackTrace();
}
//不需要特意的去try catch
unCheckException();
}
3、其他Exception
其他Exception,也是受检查的异常,在写代码的时候需要自己去手动try catch的异常,不然会报错,常见的有ClassNotFoundException、IOException、FileNotFoundException等。