异常体系结构
异常分为Error
和Exception
。Error
通常是灾难性错误,一般发生时,JVM选择终止程序执行;Exception
通常可在程序中进行处理,尽量避免
Exception
分支中有一个重要子类RuntimeException
,运行时异常
ArrayIndexOutOfBoundsException
:数组下标越界NullPointerException
:空指针异常ArithmeticException
:算术异常MissingResourceException
:丢失资源ClassNotFoundException
:找不到类
异常处理机制
处理异常的关键字
try
:监控区域,可能会出现异常的程序代码,放在其中catch
:捕获异常,若捕获,则执行catch
块的内容finally
:无论是否捕获到异常,都会执行。例如IO时出现异常,最后需要在finally
块中关闭流
TODO
throw
:方法中主动抛出异常throws
:方法中处理不了该异常,抛出,到上级处理?
public void test(int a, int b) throws ArithmeticException{
if(b == 0){
throw new ArithmeticException();
}
}
自定义异常
使用Java内置的异常类可以描述大部分异常情况。此外用户可以自定义异常,只需继承Exception
类
- 创建自定义异常类
- 在方法中通过
throw
抛出异常对象 - 如果在当前抛出异常的方法中处理异常,可以使用
try-catch
语句捕获并处理;否则在方法声明处通过throws
抛出给方法调用者的异常 - 在出现异常方法的调用者中捕获并处理异常