catch(ArithmeticException e)
{ System.out.println (\除零错误:\+e); } 执行块外语句:finally
{ System.out.println (\我是finally\);} System.out.println (\我能被正常执行到\);会被执行,
因为finally语句,无论try块中是否发生异常事件,也无论哪个catch被执行,该语句后面的程序段都会被执行。
? 保持a=10,修改c[3]=200,
答:System.out.println (\当前数组长:\+c.length);没有被执行,因为当执行到
c[3]=200;时就发生了“下标越界的错误”,执行catch(ArrayIndexOutOfBoundsException e)
{ System.out.println (\数组下标越界:\+e); }语句 { System.out.println (\我是finally\);} System.out.println (\我能被正常执行到\);会被执行, 执行块外语句:finally
因为finally语句,无论try块中是否发生异常事件,也无论哪个catch被执行,该语句后面的程序段都会被执行。
③ 再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么?
运行结果:Exception in thread \无法解析的编译问题:
执行不到的 ArithmeticException 的 catch 块。它已由 Exception 的 catch 块执行不到的 ArrayIndexOutOfBoundsException 的 catch 块。它已由 Exception 处理。
的 catch 块处理。
at Ex5_3.main(Ex5_3.java:16)
答:说明Exception是ArithmeticException和ArrayIndexOutOfBoundsException
的父类,如果其父类放到它们的前面,则就会执行父类对错误异常的处理,而不会执行它们自己本身。
4. 自定义异常类。注意throw、throws的使用。源文件是Ex5_4.java。
class MyException extends Exception //自定义异常类 {public String toString() { return \除数等于零\ } }
class DIV
{double DIV(double x,double y) throws MyException {if(y==0) throw new MyException(); else return (x/y); } }
public class Ex5_4
{ public static void main (String[] args) { double z;
11
DIV div=new DIV(); try{ z=div.DIV(100,0); System.out.println (\当前z值:\ }catch(MyException e) { System.out.println (e.toString()); } } }
运行结果: 除数等于零
【思考问题】
① 修改try...catch中语句z=div.DIV(100,0)入口参数,观察运行结果。
? z=div.DIV(100,10);
运行结果: 当前z值:10.0
? z=div.DIV(100,0);
运行结果:
除数等于零
② 将try...catch语句注释掉,观察编译信息。 答:程序发生中断
③ 上面条件保持,在main函数后面加上thorws MyException再重新编译,能否通过?
然后运行观察结果,得到什么结论? 答:不能,因为没有捕捉错误。
三、 三、实验报告要求
1. 回答第1题【思考问题】提出的问题,需改写程序的写出修改后的程序。 2. 总结第2题如何打包和使用包。
①封装的包与应用该包的程序属同一个包。 ②封装的包与应用该包的程序不属同一个包。 ③总结public修饰符用于修饰类和成员的作用。
3. 通过第3题总结try?catch,finally语句的匹配作用。
总结:在程序中使用try?catch,finally语句可以捕捉一个或多个异常
4. 通过自定义异常类,理解系统异常处理的基本原理。说明throw和throws的使用。
答:thow:是具体的实现,后面跟的是类,在try中直接执行;thows:后面跟的是接口,是抽象的,要在try中创建实例化对象才可以实现。
。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 public class Ex5_3
{ public static void main (String[] args) {int a, b;
int c[]={1,2,3}; try{1·1 a=10; b=100/a;
System.out.println (\当前a值:\ c[2]=200;
System.out.println (\当前数组长:\
12
}catch(ArithmeticException e)
{ System.out.println (\除零错误:\}
catch(ArrayIndexOutOfBoundsException e)
{ System.out.println (\数组下标越界:\ finally
{ System.out.println (\我是finally\ System.out.println (\我能被正常执行到\ } }
13
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验五(3)在线全文阅读。
相关推荐: