西安邮电大学
(计算机学院)
课内实验报告
实验名称:异常处理的机制
专业名称:网络工程
班级:1203班
学生姓名:朱磊
学号(8位):04122079
指导教师:张荣
实验日期:2014年5月21日-2014年5月21日
一. 实验目的及实验环境
1.实验目的:了解异常与错误的区别,知道运行异常与非运行异常的区别及处理条件,学会使用异常处理机制处理程序中的异常。
2.实验环境:JDK java虚拟机Eclipse下进行实验。
二. 实验内容
1.简述异常处理机制。
2.自定义异常类解决程序运行中的异常。
3.程序判断题学会Finally语句的作用范围。
三.方案设计
1.简述异常处理的机制
异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。
2.假设Sum类中有一个addContinue(int n)方法,当n>0时,方法返回1+2+···+n 的和;当n<0时,方法抛出一个受检查的ArgumentException异常。ArgumentException 类应该提供一个接受并保存n值得构造方法,以及一个能返回n值得实例方法。现定义一个Sum类和一个ArgumentException类,并编程测试它们。
程序如下:
import java.util.Scanner;
class ArgumentException extends Exception{
private int m;
public ArgumentException(int m){
this.m=m;
}
public int FanHui(){
return m;
}
}
public class Sum {
private int n;
private int sum1;
public void addContinue(int n){
for(int i=1;i<=n;i++)
{
sum1=sum1+i;
}
System.out.println(sum1);
}
public static void main(String[] args){
Sum a=new Sum();
System.out.println("请输入n的值:");
Scanner scan=new Scanner(System.in);
a.n=scan.nextInt();
try{
if(a.n>0)
a.addContinue(a.n);
else
throw new ArgumentException(a.n);
}catch(ArgumentException e){
System.out.println("n的值为:"+e.FanHui());
}
}
}
3.下面代码,是否会执行finaly语句
public class Test {
public static void main(String[] args){
try{
System.exit(1);
int i=10/0;
}
finally{System.out.println("finlly处理");}
}
}
运行结果:
不会执行finally语句,因为在异常出现之前执行了System.exit(1);
语句,已经跳出java虚拟机,不会执行后面的语句。
四.测试数据及运行结果
1.正常测试数据(3组)及运行结果;
对于程序2:
(1)请输入n的值:
3
6
(2)请输入n的值:
4
10
(3)请输入n的值:
6
21
2.非正常运行结果
请输入n的值:
-5
n的值为:-5
五.总结
1.实验过程中遇到的问题及解决办法;
在实验过程中出现了,一个类的方法调用另一个类中的实例变量的问题,其访问权限的限制解决,以及在抛出异常及解决异常的执行语句中出现了问题,最后通过查看课本解决了问题
2.对设计及调试过程的心得体会。
异常处理机制可以解决许多容易出现的异常问题,这样会使程序更健康的运行,不会出现c语言中数组越界而不报错的情况,有益于解决程序中出现的问题。