JAVA实验异常处理.docx
- 文档编号:4829434
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:18
- 大小:17.24KB
JAVA实验异常处理.docx
《JAVA实验异常处理.docx》由会员分享,可在线阅读,更多相关《JAVA实验异常处理.docx(18页珍藏版)》请在冰豆网上搜索。
JAVA实验异常处理
成都大学实验报告
姓
名
系别班级
学
号
课程名称
指导教师
实验成绩
实验日期
软件6班
JAVA程序
郑加林
2010.05.09
设计基础
实验项目名称异常处理的编程练习
一、实验目的:
1、了解异常类的作用
2、掌握对异常的捕获和处理方式
二、实验内容(包括源程序及相关说明):
1、使用
try.catch语句处理异常。
在程序中主动产生一个
ArithmeticException
类型
被
0
除的异常,
并用
catch
语句捕获这个异常。
最后通过
ArithmeticException
类的对
象e的方法getMessage给出异常的具体类型并显示出来。
源代码如下:
publicclassEXP5_1{
publicstaticvoid
System.out.println(
try{
inti=10;
i/=0;
main(String[]args){
"这是一个处理异常的例子
");
}
catch(ArithmeticExceptione){
System.out.println(
"异常是:
"+e.getMessage());
}
finally{
System.out.println("finally语句被执行");
}
}
}
2、异常类型不匹配的处理方式。
源代码如下:
public
class
EXP5_1{
public
static
void
main(String[]args){
System.
out.println(
"这是一个处理异常的例子
");
try{
int
i=10;
i/=0;
}
catch(IndexOutOfBoundsExceptione){
System.out.println("异常是:
"+e.getMessage());
}
finally
{
System.
out.println(
"finally
语句被执行
");
}
}
}
3、包含多个catch子句的异常处理方式.在try子句中设计两个可能出现的异常,当
a为0时会发生异常。
另外一个是肯定的异常,因为数组c的长度为1,定义c[42]
是非法的。
通过两个catch子句分别来捕获异常。
public
classpublic
EXP5_1{static
void
main(String[]args){
try
{
int
System.
int
int
a=args.length
out.println(
b=42/a;
c[]={1};
;
"\na="
+a);
c[42]=99;
}
catch
(ArithmeticExceptione){
System.
out.println("发生了被
0
除:
"+e);
}
catch
(ArrayIndexOutOfBoundsExceptione){
System.
out.println(
"数组下标越界:
"+e);
}
}
}
4、使用throw语句抛出异常.在上面的实验中,可以发现,异常对象是Java运行时由
系统抛出的。
抛出异常也可以通过使用throw语句实现。
throw是Java语言的关
键字,用来告知编译器此处要发生一个异常。
throw后面要跟一个新创建的异常类
对象,用于指出异常的名称和类型。
publicclassEXP5_1{
staticvoidthrowProcess(){
try{
thrownewNullPointerException("空指针异常");
}
catch(NullPointerExceptione){
System.out.println("\n在throwProcess方法中捕获
throwe;
}
}
publicstaticvoidmain(Stringargs[]){
try{
throwProcess();
"+e.getMessage());
}
catch(NullPointerExceptione){
System.out.println("再次捕获:
"+e);
}
}
}
5、使用throws语句,throws子句一般用来表明在使用该方法时可能抛出异常但不
捕获的异常。
异常由系统来处理。
throws子句也可以指出抛出异常是
RuntimeException或自定义异常类,即异常的类型,以便准备调用其它方法捕获
它,这种情况一般需要两个方法来分别处理抛出异常和处理异常。
importjava.io.*;
publicclassEXP5_1{
staticvoidmathod()throwsIllegalAccessException{
System.out.println("\n在mathod中抛出一个异常
thrownewIllegalAccessException();
");
}
publicstatic
try{
mathod();
void
main(Stringargs[]){
}
catch
System.
(IllegalAccessExceptione){
out.println("在main
中捕获异常:
"+e);
}
}
}
6、使用finally子句,当一个异常被抛出时,程序的执行流程就不再是连续的了,会跳
过某些语句,甚至会由于没有与之匹配的catch子句而过早地返回,结束程序的运行。
为了
确保一段代码不管发生什么异常都能被执行,可以使用finally子句每个try语句至少都要
有一个与之相配的catch或finally子句。
public
static
try{
System.
throw
}
finally
System.
}
}
classEXP5_1{
voidmathodA(){
out.println("\nmathodA
newRuntimeException();
{
out.println("执行mathodA
抛出一个异常
的finally"
");
);
static
void
mathodB(){
try{
System.
out.println(
"mathodB
正常返回
");
return
;
}
finally
{
System.
out.println(
"执行
mathodB
的
finally"
);
}
}
}
publicstaticvoid
try{
mathodA();
catch(Exceptione){
mathodB();
main(Stringargs[]){
}
}
}
7、通过继承
Exception
异常类创建一个自定义异常类
MyException
,然后再创建一个
主类
EXP5_7使用自定义异常类
MyException
。
classMyException
privateint
MyException(
x=a;
extends
x;
inta){
Exception{
}
public
StringtoString(){
return
"自定义异常类
MyException"
;
}
}
publicclassEXP5_1{
staticvoidmathod(inta)throwsMyException{
System.out.println("\t此处引用mathod("+a+")");
if(a>10)thrownewMyException(a);//主动抛出MyException
System.out.println("正常返回");
}
publicstaticvoid
try{
System.out.println(
mathod(8);
mathod(20);
mathod(6);
main(Stringargs[]){
"\n进入监控区,执行可能发生异常的程序段
");
}
catch
(MyExceptione){
System.
out.println(
"\t
程序发生异常并在此处进行处理
");
System.
out.println(
"\t
发生的异常为:
"+e.toString());
}
System.
out.println(
"这里可执行其它代码
");
}
}
三、实验结果:
1.
2.
因为EXP5_2程序试图捕获一个异常类为IndexOutOfBoundsException的异常,但发生
的异常却是ArithmeticException类,所以,程序可以通过编译但在运行时,系统会
给出异常报告:
报告所发生的但没有被捕获的异常。
不过在此之前,其它语句和finally
语句将会被执行。
3、
4、
5、
6、
7、
四、实验小结与建议:
1、初步了解异常类的作用。
2、掌握对异常的捕获和处理方式
3、理解系统异常处理的机制;
成都大学信息科学与技术学院制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 异常 处理