异常的分类
均是Throwable的子类。
- Error:指非程序引起的错误,因为外部环境不满足要求而导致的异常。是内部错误,一旦发生,想办法让程序优雅地结束。包括设备限制,物理设施等原因,具体有虚拟机错误(内存超出限定范围,栈溢出等),链接错误;
- Exception:
- 运行时异常:由于程序员编写的程序中有错误,在运行时产生的异常。
- 其他异常:由于用户输入等外部原因引起的程序异常。要求有明确的try-catch块来捕获异常,否则编译器会报错,是checked异常(必须捕获并指定错误处理器handler,否则
编译无法通过),其余的异常是unchecked异常(即可以不处理,编译器会通过,但是执行时会导致程序失败)。
一般程序员可以通过try-catch来捕获程序中的异常,但是一般是捕获用户输入可能造成的异常,而不是捕获因为代码bug引起的异常。
异常的处理
对于checked异常(需要强制抛出的,可以理解为非run-time异常)的处理方式:
- 通过try-catch块来捕获异常并处理。
- 在方法上用throws标明可能会抛出的异常。
对于unchecked异常也可以使用throws声明或try/catch进行捕获,但是不应该这么做,因为unchecked异常是程序的错误,可以更正的。