当前位置:文档之家› Java异常处理与自定义异常

Java异常处理与自定义异常

Java异常处理与自定义异常
Java异常处理与自定义异常

Java异常处理与自定义异常

摘要:Java程序运行期间发生的错误称为异常。异常产生后,应有相应的异常处理机制来捕获异常或抛出异常。JDK 平台为我们提供了丰富和完整的异常类,通过它们来处理程序运行中的错误,防止错误对程序造成影响,确保程序能够安全运行。当这些异常类不能捕获实际应用中的异常时,就需要用户自定义异常。异常处理和用户自定义异常的正确与灵活运用,将有效地增强程序的交互性,增加程序的完整性。

关键词:异常;捕获;抛出;异常类;自定义异常

中图分类号:TP311文献标识码:A文章编

号:1009-3044(2010)05-1123-03

Exception Handling and User-defined Exception in JA V A Programming

DA Lin-mei

(Jiangsu V ocational and Technical College of Finance & Economics, Huai'an 223003, China)

Abstract: The error occured during the Java program names exception. When it happens, there should be a corresponding exception handling mechanism to capture the exception or throw out it. JDK platform provides us with a rich and complete exception classes, through which we can deal with the error

during the running of programs, in order to prevent the effect made by the error. Then the program can run safely. When these exception classes can not capture the exception in the practical application, it needs us to define the exception by ourselves. The same as exception handling ,the accurately and flexiblely using of user-defined exception will effectively enhance the interactiveness and the integrity of the program.

Key words: exception; capture the exception; throw out the exception; exception classes; user-defined exception

众所周知,Java编程语言的特点之一是它的健壮性。这就意味着错误可以最小化,并能够在程序中得到有效的处理。

1 异常概念及异常处理机制

在Java中,有这样几种错误:一是编译错误,通常为语法错误,即程序编写过程中不符合Java语法规则的错误;二是逻辑错误,也称算法错误,编译器不可能检查这类错误;三是运行时错误,即程序在执行时所发生的执行错误,如,在程序中用零作除数、数组下标越界、在指定的磁盘上打开不存在的文件等。

这种运行时错误就称为异常。异常产生后,系统中若无相应的机制处理,则会产生死机、死循环或其他对操作系统的损害。

Java的异常处理机制是:在Java程序的一个方法的运行过程中,如果发生了异常,则这个方法生成代表该异常的一个

对象,并把它交给Java运行时系统,这个过程称为抛出异常。异常对象中包含了有关异常的信息,如异常类型、发生错误时的程序状态等。当运行时系统收到抛出的异常对象后,运行时系统在方法的调用堆栈中查找,找到可以处理该异常的方法,并将该异常交给此方法处理。这个过程称为捕获异常。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。

Java规定,所有抛出的异常都必须是从Throwable 类派生而来。在实际的Java 编程中,JDK平台已经为我们设计好了非常丰富和完整的异常类,每个异常类都代表了一种运行错误。Throwable类有两个直接子类:Error和Exception。其中,Error类的异常为内部错误,Java程序不对这类异常进行处理。Exception类是编程中处理的错误,它是异常层次结构的根类。在Exception类中,包含着一个重要的子类,就是RuntimeException,这个子类包含所有常见的运行时异常,如ArithmeticException,为算术错误情形,以零作除数就属于这种异常;IllegalArgumentException,表示方法接收到非法参

数;ArrayIndexOutOfBoundsException,表示数组下标越

界;NumberFormatException,表示数字格式异常等。

异常处理一般有两种方式:一是自己来处理异常,在方法上使用try-catch-finally语句来捕获异常并处理它所生成的异常对象;二是使用throw抛出异常,或使用throws声明异常。

下面是一个处理除数为零的异常实例。

public class Test1{

public static void main(String args[]){

int a,b;

try{ a=10;b=0;

int c=Divide(a,b);

System.out.println(a+"/"+b+"="+c);

}catch(ArithmeticException e){

System.out.println("除数为零!");

}finally{

System.out.println("这一语句一定会执行。");

}}

static int Divide(int x,int y){

return x/y;

}}

程序执行c=Divide(a,b)时,产生异常,因此输出“除数为零!”。因为无论try/catch块内发生什么,finally块都将在运行时执行,所以紧接着又输出“这一语句一定会执行。”。

2 编写用户自定义异常

JDK平台提供的内置异常不一定总能捕获程序中发生

的所有错误,如,有这样一个需求,从键盘上随机输入一个数值,当这个数值为正数时将其显示出来,若为负数时显示异常信

息“数据为负数”。在我们编写程序时不能够用内置异常类来捕获异常。因此,这时就需要用户自定义异常。

用户自定义异常类应该是Exception类的子类,编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。

用户自定义异常的步骤是:1)创建一个类继承于Throwable或其子类;2)添加构造方法;3)在一个方法中使用throw抛出异常;4)在另一个方法中捕获并处理异常。

常用的格式如下:

public class 自定义异常类名extends Exception {//或者继承任何标准异常类

public自定义异常类名(){}//用来创建无参数对象

public自定义异常类名(String message) {//用来创建指定参数对象

super(message); //调用超类构造方法

}}

上述判断键盘输入数据是否为负数,若为负则显示异常信息的例子,可用下述方法解决:

public class Test2{

public static void main(String args[]){

try{

double x=Double.parseDouble(args[0]);

if(x 5) {

throw new DepartmentException();

}else {

System.out.println("雇员编号是: " + empId);

System.out.println("雇员姓名是: " + empName);

System.out.println("部门编号是: " + deptId);

}}catch (DepartmentException de){

System.out.println("数据无效");

}catch (NumberFormatException ne){

System.out.println("数据错误");

}catch (ArrayIndexOutOfBoundsException ae){

System.out.println("数据不完整");}}

}

程序运行时,有这样几种可能:

1)输入雇员编号、雇员姓名和部门编号分别为“1”、“Tom”和“6”时,因部门编号超过5,产生DepartmentException 异常,显示“此部门不存在!!!数据无效”。

2)输入雇员编号、雇员姓名和部门编号分别为“a”、“Tom”和“6”时,因雇员编号不为整数,产生NumberFormatException异常,显示“数据错误”。

3)输入一个雇员编号“1”,因缺少雇员姓名和部门编号,产生ArrayIndexOutOfBoundsException异常,显示“数据不完

整”。

4)输入雇员编号、雇员姓名和部门编号分别为“1”、“Tom”和“4”时,无异常产生,显示雇员详情。

异常处理机制是保证Java程序正常运行、具有较高安全性的重要手段。善于在应用程序中使用异常,编写用户自定义异常,可以提高应用程序的交互性,增加应用程序的灵活性。正确使用用户自定义异常,对于开发良好的Java 程序,能够起到重要的作用。

参考文献:

[1] 北京阿博泰克北大青鸟信息技术有限公司.Java面向对象程序设计[M].北京:科学技术文献出版社,2005.

[2] 迟丽华.Java程序设计教程[M].北京:清华大学出版社,2008.

[3] 贾振华.Java语言程序设计[M].北京:中国水利水电出版社,2004.

相关主题
文本预览
相关文档 最新文档