1. 常见的异常
Java的异常都是派生于Throwable类的一个实例,都继承于Throwable
Exception
:所有异常的父类。
RuntimeException
:所有运行时异常的父类,是由程序错误导致的异常。
程序本身没有问题时的运行时异常:
IOException
:与输入输出操作相关的异常。
SQLException
:与数据库操作相关的异常。
NullPointerException
:访问空对象的成员时抛出。
ArrayIndexOutOfBoundsException
:数组下标越界时抛出。
ClassNotFoundException
:找不到类时抛出。
Exception
中除了运行时异常,还有编译时异常。
2. Exception和Error的区别
-
Exception分为可检/不可检异常。可以捕获并处理异常(try-catch),也可以在方法签名使用throws关键字声明方法可能抛出的异常
-
Error:比较严重的问题
-
描述了Java运行时系统的内部错误和资源耗尽错误
-
一般是JVM运行时出现了错误
-
OOMError:没有内存分配
-
StackOverflowError:栈资源耗尽
-
VirtualMachineError
-
NoClassDefFoundError
-
-
3. Checked Exception和Unchecked Exception
可检查异常:编译器检查的异常,必须处理。若不处理将报错,通常派生自Exception类及其子类
不可检查异常:运行时检测,通常是编程错误导致。派生自RuntimeException及其子类。