异常类的继承体系
主讲人:王少华 QQ群号:483773664
学习目标:
1、掌握异常的体系
2、掌握处理异常类的几中常用方法
一、异常类继承体系图
Java提供了丰富的异常类,这些异常类之间有严格的继承关系,如下图所示
从上图可以看出,Java把所有非正常情况分成两种,一种是异常(Exception),另一种是错误(Error),它们都继承Throwable父类。
二、Error
Error错误,一般是指虚拟机相关的问题。即仅靠程序本身无法恢复的严重错误。如系统崩溃、虚拟机出错误、动态链接失败等。这种错误通常应用程序无法处理。因为应用程序不应该试图使用catch块捕获这种异常。
三、Exception
由Java应用程序抛出和处理的非严重的错误,它分为运行时异常和非运行时异常。
运行时异常,包括RuntimeException及其所有子类,不要求程序必须对它们做出处理,即在程序中,即使用不使得try-catch或其他异常处理方式(如throws)进行处理,程序仍然可以编译和运行。
非运行异常,除了运行时异常外的其他由Exception继承来的异常类。它的特点是程序中的异常必理进行处理,否则会出现编译错误
四、几中常见的编译时异常
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
- 如果运行该程序时,数组长度不够,将会发生数组越界异常:IndexOutOfBoundsException.Java将调用IndexOutOfBoundsException对应的catch块处理该异常
- 如果运行该程序时,数组中的值不是数字,而是字母,则发生数字格式异常:NumberFormatException.Java将调用NumberFormatException对应的catch块处理该异常
- 如果运行该程序时,除数是0,则发生除0异常:ArithmeticException。Java将调用ArithmeticException对应的catch块处理该异常
- 如果运行该程序时,出现其他异常,该异常总是Exception类或其子类的实例,Java将调用Exception对应的catch块处理该异常
注:上面这些异常都是比较常见的异常,必须明白出现这些异常的条件。同时还有一些常见的异常:比如空指针异常(NullPointException)等,这些我们再以后学习和工作的过程中,慢慢熟悉和积累。
五、访问异常信息
如果程序需要在catch块中访问异常对象的相关信息,可以通过调用catch后异常形参的方法来获得。
所有异常对象都包含如下几个常用方法:
- getMessage():返回该异常的详细描述的字符串
- printStackTrace():将该异常的跟踪栈信息输出控制台
- printStackMessage(PrintStream s):将该异常的跟踪栈信息输出到指定的输出流
- getStackTrace():返回该异常的跟踪栈信息。
1 2 3 4 5 6 7 8 9 10 |
|
从上面的图可以看出,异常的详细描述信息是:a.txt (系统找不到指定的文件。)。下面更详细的信息是异常跟踪信息。