所有的异常都是有Throwable继承而来,Throwable有两个子类,Exception和Error。
Error
Error类层次结构描述了Java运行时系统内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。如果出现了这样的内部错误,除了通告给用户,并尽力使程序安全地终止之外,再也无能为力。
Exception
Exception非为两类。RuntimeException和其他异常。
RuntimeException:主要是程序错误导致的异常。他无法在编译期检查出来,所以又叫非受查异常。
常见的有:
1.ArrayIndexOutOfBoundsException
2.NullPointerException
3.ClassCastException
其他异常:程序没有错误,主要有I/O等错误导致的异常。它可以在编译期检查出来,所以叫受查异常。
常见的有:
1.FileNotFountException
2.SQLException
3.IOEException
Throwable类常用方法
//返回异常发生时的简要描述
public String getMessage();
//返回异常发生时的详细信息
public String toString();
//返回异常对象的本地化信息
//如果Throwable的子类覆盖了这个方法,可以生成覆盖后的方法。如果没有,则与getMessage()返回相同。
public String getLocalizedMessage();
//在控制台上打印Throwable对象封装的异常信息
public void printStackTrace();
异常处理总结
try块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finaly块。
catch块:用于处理try捕获到的异常。
finally块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。
但是以下三种情况下,finally块不会被执行:
- 异常语句之前执行了System.exit(int)。
- 程序所在的线程死亡。
- 关闭CPU。
注意:当try语句和finaly语句中都有return语句时,在方法返回之前,finaly语句的内容将被执行,并且finaly语句的返回值将会覆盖原始的返回值。