如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第6章异常处理6.1异常的概念程序运行时发生错误,Java语言称之为异常,它会使程序的运行流程发生改变。对于异常可以采取多种方式进行处理,如终止程序运行,这是最简单的方法。当然,大多数情况下用户不希望采取这种处理方法。当发生错误时,用户一般会希望程序能够给出足够的错误信息,继续运行。因此,一个好的程序员在编写程序时,必须预测程序执行过程中可能发生的各种异常情况。Java语言提供了一种不同于传统程序设计语言的异常处理方法,使程序员可以方便地检测和处理各种异常情况。下面先看一个例子。
【程序6.1】异常处理方法演示。
publicclassExceptionDemo
{
staticint[]IntArrayAdd(int[]a,int[]b)
{
int[]c=newint[a.length];
for(inti=0;i<c.length;i++)
c[i]=a[i]+b[i];
returnc;
}
publicstaticvoidmain(String[]args)
{
int[]a=newint[20];
int[]b=newint[10];
for(inti=0;i<20;i++)
a[i]=i;
for(inti=0;i<10;i++)
b[i]=i;
try{int[]c=IntArrayAdd(a,b);
for(inti=0;i<c.length;i++)
System.out.print(""+c[i]);
}catch(Exceptione){
System.out.println("Thereisanerror!");
}
}
}程序运行结果为:
Thereisanerror!
从第3章有关数组的知识可以知道,程序6.1的main方法在调用方法IntArrayAdd对数组b访问时下标超界,产生一个异常。由于程序6.1采用了Java语言中的异常处理方法,程序执行流程发生变化,转到语句System.out.println(“Thereisanerror!”)执行。
6.1.2异常处理
传统的程序设计语言,例如C,需要程序员检测错误发生的原因并进行处理,这样,就需要在正常执行流程中增加一些if-else语句或switch-case语句来检测函数的返回值或全局的错误代码,判断发生了什么类型的错误。这种处理方法使得程序的流程变得复杂,难以阅读理解,而Java语言的异常处理机制使得错误信息的处理和流程控制变得很简单。
观察一下程序6.1可以发现,程序中的错误在IntArrayAdd方法中发生,但是该方法中并没有错误处理语句,既没有用返回值标志错误发生,也没有设置一个main方法和IntArrayAdd方法可以共同访问的变量用于传递错误信息。那么,错误信息是怎样从IntArrayAdd方法传递到main方法的呢?
实际上IntArrayAdd方法在超界访问数组元素时抛掷了一个异常,创建了一个异常对象用于存储错误信息,由于IntArrayAdd方法没有处理该异常,Java虚拟机终止IntArrayAdd方法的执行,然后自动返回到main方法,将流程转入异常处理部分。
与传统的错误处理方法相比,Java语言的异常处理机制有很多优点。它将错误处理代码从常规代码中分离出来,例如程序6.1的main方法中先调用IntArrayAdd方法然后输出结果,中间并没有插入错误处理的代码,而按照传统的方法程序的结构应该是这样的:
调用IntArrayAdd方法
if(发生错误)
输出错误信息
else
输出结果
当错误类型较多,需要分别处理时,采用这种方法很显然会使程序流程变得十分复杂。
异常处理机制带来的另一个好处是错误的传播,Java异常会自动在方法调用堆栈中传播,例如程序6.1异常从IntArrayAdd方法自动传递到main方法。
另外,Java异常处理机制克服了传统方法的错误信息有限的问题,可以针对不同的错误类型定义不同的异常类,异常处理机制会根据异常对象的类型寻找匹配的错误处理代码。
6.2Java语言异常的处理//错误的处理
}
finally{
//如果try部分代码执行完或catch部分代码执行完,则执行该部分代码
}
try块为程序正常的流程,如果发生异常,则终止try块的执行转入catch块。对于一个try块,可以有多个catch块,每个catch后的异常类名应不同,Java语言根据异常对象的类型从上向下匹配,执行第一个与之匹配的catch块。Java语言中所有的异常类都是Throwable类的子类,用户可以从已有的异常类派生新的类型用于处理用户程序中特有的错误类型。如果找不到匹配的catch块,则该异常继续在调用堆栈中传播,传递
天马****23
实名认证
内容提供者
最近下载
最新上传
高平市第一中学2023年高三综合题(三)物理试题.doc
鄂尔多斯市第一中学2022-2023学年高三3月份两校联考物理试题.doc
迪庆市重点中学2023届高考物理试题命题比赛模拟试卷(31).doc
赣州市红旗实验中学2023届高三下学期第一次模拟-物理试题试卷.doc
福建莆田秀屿下屿中学2023年高三高考考前指导卷(2)物理试题.doc
福建省龙海市第二中学2023年高三下学期第一次适应性考试物理试题.doc
福建省龙岩高中2023届高三第三次教学质量监测物理试题试卷.doc
福建省龙岩市龙岩第一中学2023届高三3月新起点考试物理试题.doc
福建省龙岩市龙岩一中2022-2023学年5月高三联考物理试题试卷.doc
福建省龙岩市长汀县新桥中学2023年下学期高三联考物理试题.doc