信息工程学院
Java语言课内实习报告
(201~201学年第 二学期)
实习题目:异常处理
姓 名: 学 号:
专 业:计算机科学与技术
年级班级:
一、实习目的
掌握Java的异常处理机制及相关实现方法能够在程序设计中熟练运用异常及相关类及对象。
二、实习设计过程
实验题1 在程序中产生一个ArithmeticException 类型被0除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException 类的对象e 的方法getMessage 给出异常的具体类型并显示出来。 设计如下:
try { int c=a/b; System.out.print(c); } catch(ArithmeticException e) { System.out.println(\ System.out.println(\ } 运行结果如下:
实验题2 在一个类的静态方法methodOne()方法内使用throw 产生异常,使用throws子句抛出methodOne()的异常,在main方法中捕获处理异常。 设计如下:
static void methodOne() throws ArrayIndexOutOfBoundsException { throw new ArrayIndexOutOfBoundsException(\数组下标越界\ }
try{ methodOne(); } catch(ArrayIndexOutOfBoundsException e ){ System.out.println(\错误是:\ }
运行结果如下:
实验题3 编写一个程序,输入一个班某门课程成绩,统计及格人数、不及格人数平均分。设计一个异常类,当输入的成绩小0分或大于100分时,抛出异常,程序将捕捉这个异常,并作出相应处理。 设计如下: //异常类部分
class InterException extends Exception{ String message; public InterException(double m){ message= \输入的成绩\不合法\请检查您的输入是否有误!\ } public String toString(){ return message; } }
//成绩处理部分
public void setRecord(double record) throws InterException { if(record>100||record<0){ throw new InterException(record); } else{ if(record>=60) { n1++; } else{ n2++; } sum+=record; } }
//Main函数中try -catch块部分: try{ double sore=reader.nextDouble(); //System.out.println(sore); record.setRecord(sore); }catch(InterException e){ System.out.println(e.toString()); --i; }
运行结果如下:
实验题4 创建异常类的练习。需要使用3个Java程序来实现: 创建银行类Bank: //存钱部分
void deposite(double dAmount){ if(dAmount>0) {this.dAmount=dAmount; this.balance+=dAmount;} }
//取钱部分 void withdrawal(double dAmount) throws InsufficientFundsException{ //System.out.println(\取款金额为:\ if(dAmount>this.balance){ throw new InsufficientFundsException(this.balance,dAmount); }else{ this.balance-=dAmount;} }
//显示余额部分 double show_balance(){ return this.balance;} 创建异常类: //异常类的构造
public InsufficientFundsException(double balance,double dAmount){
this.balance=balance; this.dAmount=dAmount; }
//异常信息
String excepMesagge(){ Bank bank=new Bank(this.balance); return \您的取款金额为\但是账户余额仅为\操作不合法!\ }
创建主类: ExceptionDemo: Bank bank=new Bank(2000); bank.deposite(100); try{ bank.withdrawal(4000); }
catch(InsufficientFundsException e){ System.out.println(\ System.out.println(e.excepMesagge()); }
finally{ System.out.println(\操作退出!\ }
运行结果如下:
三、调试过程中存在问题分析
实验题目4中异常类创建过程中,用到Bank类中的方法,初始化过程中,Bank类中的信息与异常类的连接存在问题,导致信息显示与想要的结果不匹配。 解决办法:String excepMesagge(){ Bank bank=new Bank(this.balance); return \您的取款金额为\但是账户余额仅\操作不合法!\}
在这个方法中创建Bank类的对象,构造用异常类中的this.balance。
四、心得、体会与建议
在这次实验过程中,异常类的构造我自己感觉还是不太熟悉。方法用throws抛出异常,方法内部用throw关键字产生异常基本掌握。这部分自己还需要加大练习力度。