实验三:异常处理程序设计
实验目的:了解Java中异常处理(exception)的作用及常用的异常类,掌握 异常处理的设计方法。
实验要求:理解系统异常处理的机制和创建自定义异常的方法。 实验内容:
在已实现的方法中,加入出错处理异常(EXCEPTION),又称例外,是特殊
的运行错误,对应着Java语言特定的运行机制。由于Java程序是在网络环境中 运行的,安全成为需要首先考虑的首要因素之一。为了能够及时有效的处理程序 中的运行错误,Java中引入了异常和异常类。作为面向对象的语言,异常与其它 语言要素一样,是面向对象规范的一部分,是异常类的对象。
Java的异常类是处理运行是错误的特殊类,每一种异常类对应一种特定的运 行错误。所有的Java异常类都是系统类库中的Exception类的子类。Throwable
类是java.lang包中的一个类,它派生了两个子类:Exception和Error。其中Error 类由系统保留,而Exception类则供应用程序使用。
系统定义的运行异常:Exception类有若干子类,每一个子类代表了一种特定 的运行错误。这些子类有些是系统事先定义好包含在Java类库中的,称为系统 定义的运行异常。系统定义的运行异常通常对应着系统运行错误。由于这种错误 可能导致操作系统错误,甚至是整个系统的瘫痪,所以需要定义异常来特别处理。 用户自定义的异常:系统定义的异常主要用来处理系统可以预见的较常见的 运行错误,对于某个应用所特有的错误,则需要用户程序自己创建用户自定义异 常。这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。用户自 定义异常用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及时识 别并处理。因此用户自定义异常可以使用户程序更为强健,使整个系统更加安全 稳定D
异常的抛出:Java程序在运行时如果引发了一个可识别的错误,就会产生一 个与该错误相对应的异常类的对象,这个过程被称为异常的抛出。异常的抛出根 据异常类的不同,抛出的方法也不同。所有的系统定义的异常都可以由系统自动 抛出;用户程序自定义的异常必须借助于throw语句来定义何种情况算是产生了 此种异常对应的错误,并应该抛出这个异常的新对象。
异常的处理:当一个异常被抛出时,应有专门的语句来接受这个被抛出的异 常对象,这个过程被称为捕捉异常。当一个异常类被捕捉或接收后,用户程序就 会发生跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出 当前程序和Java虚拟机回到操作系统。在Java程序里,异常处理语句的格式如 下:
try{ //用try语句来选定捕获异常的范围 }
catch{//捕获只能作输出操作 异常处理语句组 }
finally{ }
●下面的程序中定义了一个用户程序的异常InsuffivientFoundsException, 这个异常用来处理帐户资金不足的逻辑错误。
Class InsufficientFoundsException extends Exception
{
private BankAccount m-ba; private double getAmount;
InsufficientFoundsException(BankAccount ba,double dAmount) {
super(\ m-ba=ba;
getAmount=dAmount; }
public String toString() {
StringBuffer sb=new StringBuffer();
sb.append(\ sb.append(m-ba.getAccountNumber()); sb.append(\ sb.append(m-ba.Balance()); sb.append(\ sb.append(getAmount); return sb,toString(); } }
●实现异常处理
l)public class TestExcep1{
public static void main(string args[]){ int I=0;
String greeting[]={\ while(l<4){
trY{System.out.println(greeting[l]); }
catch(ArrayIndexOutofBoundsException e {
system.out.println(\越界\ I=-1
}finally{
system.out.println(\总会运行\ } I++ }} }
2)public class TestExcep2{
public static void main(String[] arg3){
System.out.println(\这是一个异常处理的例子\\n\ try{
int i=10;
i/=0; }
catch (ArithmeticException e){
System.out.println(\异常是:\ }
finally{
System.out.println(\语句被执行\ } } }