第八章:异常
ITjob
就业培训
第八章:异常
学习目标
异常的概念
异常的分类
公共异常
实例分析
自定义异常
方法覆盖和异常
122
第八章:异常 ITjob
就业培训
异常的概念
在 Java 编程语言中,异常类定义程序中可能遇到的轻微的错误条件。你可以写代码来处
理异常,并继续执行程序,而不需要让程序中止。
在程序执行中,任何中断正常程序流程的条件都是异常。例如,发生下列情况时,会出
现异常:
想打开的文件不存在
网络连接中断
操作数超出预定范围
正在装载的类文件丢失
在 Java 编程语言中,错误类定义被认为是不能恢复的严重错误条件。在大多数情况下,
当遇到这样的错误时,建议让程序中断。
在程序中发生错误时,发现错误的方法抛出一个异常到其调用程序,给出已经发生问题
的信号。然后,调用方法捕获抛出的异常,在可能时,再恢复回来。这个方案给程序员
一个写处理程序的选择,来处理异常。
通过浏览 API,可以决定方法抛出的是什么样的异常。
异常的分类
在 Java 编程语言中 java.lang.Throwable 类充当所有对象的父类,可以使用异常处
理机制将这些对象抛出并捕获。在 Throwable 类中定义方法来检索与异常相关的错误信
息,并打印显示异常发生的栈跟踪信息。它有 Error 和 Exception 两个基本子类。
Throwable 类不能直接使用,我们使用其子类来捕获和描述异常信息。
异常结构如图:
Error 表示严重的错误问题。比如说内存溢出。不可能指望程序能处理这样的情况。
Exception 则是我们关心和需要处理的错误。
123
第八章:异常
ITjob
就业培训
RuntimeException 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,
从 不 会 发 生 的 情 况 。 比 如 , 如 果 数 组 索 引 扩 展 不 超 出 数 组 界 限 , 那 么 ,
ArrayIndexOutOfBoundsException 异常从不会抛出。比如,这也适用于取消引用
一个空值对象变量。因为一个正确设计和实现的程序从不出现这种异常,通常对它不做
处理。这会导致一个运行时信息,应确保能采取措施更正问题,而不是将它藏到谁也不
注意的地方。
其它异常表示一种运行时的困难,它通常由环境效果引起,可以进行处理。例子包括文
件未找到或无效 URL 异常(用户打了一个错误的 URL),如果用户误打了什么东西,两
者都容易出现。这两者都可能因为用户错误而出现,这就鼓励程序员去处理它们。
预定义异常
Java 编程语言提供几种预定义的异常。下面是可能遇到的更具共同性的异常中的几种:
ArithmeticException:整数被 0 除,运算得出的结果。
int i = 12 / 0;
NullPointerException:当对象没被实例化时,访问对象的属性或方法的尝试:
Date d = null;
System.out.println(d.toString());
NegativeArraySizeException:创建带负维数大小的数组的尝试。
ArrayIndexoutofBoundsException:访问超过数组大小范围的一个元素的尝试。
SecurityException:典型地被抛出到浏览器中,SecurityManager 类将抛出
applets 的一个异常,该异常企图做下述工作(除非明显地得到允许):
访问一个本地文件
打开主机的一个 socket,这个主机与服务于 applet 的主机不是同一个。
在运行时环境中执行另一个程序
异常的处理机制
一般来说,异常的处理机制有以下三种:
try-catch-finally 主动异常处理
throws 消极异常处理
throw 引入异常
实例分析
例
1
问题的描述:
写一个常见的异常
解决方案:
请看下例:
public class TestException {
public static void main(String args[]) {
int i = 0;
String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" };
for (; i < 6; i++) {
System.out.println(ss[i]);
}
}
}
运行的结果为如图。
124