JAVA调试环境及异常处理程序.docx
《JAVA调试环境及异常处理程序.docx》由会员分享,可在线阅读,更多相关《JAVA调试环境及异常处理程序.docx(13页珍藏版)》请在冰豆网上搜索。
JAVA调试环境及异常处理程序
数学与计算科学学院
实验报告
实验项目名称Java调试环境及异常处理程序
所属课程名称面向对象技术
实验类型设计型
实验日期2014.4.1
班级信计12-2
学号20125310022X
姓名
成绩
一、实验概述:
【实验目的】
1、掌握Java开发运行环境的安装、配置。
2、了解并掌握Java异常的概念以及工作机制。
3、熟悉并掌握Java异常与异常类。
4、熟悉JDK已经定义的若干异常类的层次结构。
5、掌握自定义异常类的创建方法。
6、掌握抛出捕获处理异常语句的使用(try…catch…finally).
7、掌握上抛异常语句的使用(throws).
8、掌握Java Applet程序的编写与实践操作。
9、了解Java中异常处理(exception)的作用,掌握异常处理的设计方法。
【实验原理】
1、Java通过API中Throwable类的众多子类描述各种不同的异常。
2、Throwable有两个重要的子类:
Exception(异常)和Error(错误),二者都是Java异常处理的重要子类,各自都包含大量子类。
3、在Java应用程序中,异常处理机制为:
抛出异常,捕捉异常。
4、对于多异常的处理时通过在try块后面定义若干个catch块来实现的,每个catch块用来接收和处理一种特定的异常对象。
5、在Java应用程序中,异常对象是依靠以catch语句为标志的异常处理语句块来捕捉和处理的。
异常处理语句块又称为catch语句块如:
catch(异常类型异常形式参数表)
{
异常处理语句组;
}
6、异常的处理主要包括捕捉异常、程序流程的跳转和异常处理语句块的定义。
7、Java的异常类是处理运行时错误的特殊类,每一种异常类对应一种特定的运行错误。
Java的异常类只能在三处地方出现:
⑴extends之后;⑵catch()的形参列表;⑶throws的后面。
【实验环境】
Windows7
MicrosoftVisualJ++6.0
JDK6.0
WPS2013
二、实验内容:
【实验方案】
1、安装Window版本的JDK,并设置安装路径信息;
2、利用MicrosoftVisualJ++6.0编写程序并测试Java程序;
3、利用MicrosoftVisualJ++6.0编写程序并测试JavaApplet程序;
4、利用MicrosoftVisualJ++6.0编译程序,自定义异常类,处理用户程序中特定的逻辑运行错误。
用try块定义可能出现的异常,用catch语句捕捉和处理try块中的异常语句。
如下:
try
{ 可能抛出异常语句;}
catch
{异常处理语句组;}
【实验过程】(实验步骤、记录、数据、分析)
1、新建并命名一个文件夹AAAA;
2、创建源程序文件BBBB.java
具体操作:
打开MicrosoftVisualJ++6.0编译器,创建j++工程并命名BBBB,并将其保存路径改为桌面上新建好的文件夹,当进入编辑窗口时,先进行保存操作,存于已创建的文件夹,该文件名必须与主类名相同,即BBBB.java,然后才编写JavaApplet程序,程序如下:
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassAAAAextendsAppletimplementsActionListener
{
Labelpr1,pr2;
TextFieldt1,t2;
Buttonb;
Students;
Stringmsg;
publicvoidinit()
{
pr1=newLabel("姓名:
");
pr2=newLabel("学号:
");
t1=newTextField(7);
t2=newTextField(7);
b=newButton("确定");
b.addActionListener(this);
add(pr1);add(t1);
add(pr2);add(t2);
add(b);
s=newStudent();
msg="欢迎来到数计学院";
}
publicvoidactionPerformed(ActionEvente)
{
s.setId(Integer.parseInt(t2.getText()));
msg=s.toString();
repaint();
}
publicvoidpaint(Graphicsg)
{
g.drawString(msg,730,100);
}
}
classStudent
{
Stringname;
intid;
intage;
voidsetId(intx)
{
id=x;
}
publicStringtoString()
{
return"姓名:
"+name+"学号:
"+id;
}
}
3、调试JavaApplet程序,显示的结果如下:
4、发现以上的程序没有出现错误,接着在相应的输入框里输入“杜帅”和“53100226”,显示的结果如下:
4、以上程序并不算完整,当学号输入为零或负数时,会照原样输出,学号输入字符时,程序没反应,然而,我们都知道学号都为正整数,所以程序还不适合用户的使用,为此,我们要使用java提供的异常类,使程序更完善。
Java的异常类是处理运行时错误的特殊类,每一种异常类对应一种特定的运行错误。
Java的异常类只能在三处地方出现:
⑴extends之后;⑵catch()的形参列表;⑶throws的后面。
5、运行程序发现在学号输入框中输入字符时,程序无反应,说明执行时出现NumberFormatException异常。
修改程序为
publicvoidactionPerformed(ActionEvente)
{
try
{
s.setId(Integer.parseInt(t2.getText()));
msg=s.toString();
}
catch(NumberFormatExceptionee)
{
msg="学号必须是整数类型!
!
!
";
}
}
6、对修改后的程序进行调试,在相应的输入框里输入“杜帅”和“3100226abc”,显示的结果如下:
7、try块启动Java的异常处理机制,catch接收try块中可能产生的异常。
运行程序发现在学号输入框中输入“-53100226”时,程序原样输出如下:
8、自定义异常类抛出异常:
classNegativeExceptionextendsException
{
}
学号输入输出改变为:
voidsetId(intx)throwsNegativeException
{
if(x>0)
id=x;
else
thrownewNegativeException();
}
再添加个catch语句,整体修改为:
publicvoidactionPerformed(ActionEvente)
{
try
{
s.setId(Integer.parseInt(t2.getText()));
msg=s.toString();
}
catch(NumberFormatExceptionee)
{
msg="学号必须是整数类型!
!
!
";
}
catch(NegativeExceptionee)
{
msg="学号必须是正整数类型!
!
!
";
}
}
9、对修改后的程序再次进行修改,在输入框学号里输入“-123456”,显示结果如下:
由以上结果说明对修改后的程序进行调试,程序更加完善,可以解决问题。
【实验结论】(结果)
【实验小结】(收获体会)
1、通过本次操作实验,我学会了JDK安装技巧,熟练掌握了测试环境变量的设置是否成功,并运行了Java程序。
2、让我了解了Java的语言特点,掌握了程序的编译和测试。
3、理解了异常时如何捕获以及抛出的,但对整体的异常处理理解并不透彻。
4、理解并掌握了异常类的作用。
5、学会了对异常的捕获和处理方式。
6、理解了系统异常处理的机制。
7、在实验中我们要细心认真、反复的揣摩的钻研课本知识。
8、通过实践操作,不仅找到了自己在这方面的缺陷,深感知识面匮乏,需要更加努力的学习,同时也提高了我的动手操作能力。
三、指导教师评语及成绩:
评语
评语等级
优
良
中
及格
不及格
1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强
2.实验方案设计合理
3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)
4实验结论正确.
成绩:
指导教师签名:
批阅日期:
附录:
源程序
程序一:
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassaaaextendsAppletimplementsActionListener
{
Labelpr1,pr2;
TextFieldt1,t2;
Buttonb;
Students;
Stringmsg;
publicvoidinit()
{
pr1=newLabel("姓名:
");
pr2=newLabel("学号:
");
t1=newTextField(7);
t2=newTextField(7);
b=newButton("确定");
b.addActionListener(this);
add(pr1);add(t1);
add(pr2);add(t2);
add(b);
s=newStudent();
msg="";
}
publicvoidactionPerformed(ActionEvente)
{
try
{
s.setId(Integer.parseInt(t2.getText()));
msg=s.toString();
}
catch(NumberFormatExceptionee)
{
msg="学号必须是整数类型!
!
!
";
}
catch(NegativeExceptionee)
{
msg="学号必须是正整数类型!
!
!
";
}
s.name=t1.getText();
repaint();
}
publicvoidpaint(Graphicsg)
{
g.drawString(msg,120,120);
}
}
classStudent
{
Stringname;
intid;
intage;
voidsetId(intx)throwsNegativeException
{
if(x>0)
id=x;
else
thrownewNegativeException();
}
publicStringtoString()
{
return"姓名:
"+name+"学号:
"+id;
}
}
classNegativeExceptionextendsException
{
}