1、异常类结构表
Throwable(所有异常的祖先) | Error(错误,无法捕获的程序错误) | OutOfMemoryError(堆内存溢出) | |
StackOverFlowError(栈内存溢出) | |||
LinkageError | |||
Exception(异常类) | IOException(检验异常类,没有try/catch无法通过编译) | EOFException | |
FileNotFoundException | |||
MalFormedURLxception | |||
UnknownHostException | |||
IntruptedException | |||
RuntimeException(非检验异常类,可捕获异常) | ArithmaticException(算术错误) | ||
NullPointerException(空指针错误) | |||
IndexOutOfBoundException(越界错误) | |||
ClassCastException(类型转换错误) | |||
ArrayIndexOutOfBoundsException(数组越界) | |||
IlleagelArgumentException | |||
NoSuchElementException |
2、Throwable常用的方法
- public String getMessage():返回异常发生时的简要描述
- public String toString():返回发生异常时的详细信息
- public String getLocalizedMessage():返回异常发生时的本地化信息。使用Throwable的子类覆盖这个方法,可以本地化信息;如果子类没有覆盖这个方法,则返回的信息和getMessage()一样
- public void printStackTrace():在控制台打印Throwable对象封装的异常信息。
3、异常处理总结
- try块:用户捕获异常代码块。其后面可以跟上多个catch来捕获不同的异常,如果没有catch,必须跟上finally。
- catch块:用于处理捕获到的异常
- finally块:最终都会执行的模块。当try或catch中遇到return时,finally会在返回结果前执行。
- 在try或finally块中使用了System.exit(int)退出程序,则finally不会被执行;但是如果System.exit(int)在异常语句之后,可finally还是会被执行。
- 程序所在的线程死亡,finally也不执行
- 关闭CPU,finally也不执行。