Java异常处理与自定义异常
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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平台提供的内置异常不一定总能捕获程序中发生
的所有错误,如,有这样一个需求,从键盘上随机输入一个数值,当这个数值为正数时将其显示出来,若为负数时显示异常信