Java中异常处理.docx

上传人:lao****ou 文档编号:220826 上传时间:2023-06-05 格式:DOCX 页数:12 大小:40.31KB
下载 相关 举报
Java中异常处理.docx_第1页
第1页 / 共12页
Java中异常处理.docx_第2页
第2页 / 共12页
Java中异常处理.docx_第3页
第3页 / 共12页
Java中异常处理.docx_第4页
第4页 / 共12页
Java中异常处理.docx_第5页
第5页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Java中异常处理.docx》由会员分享,可在线阅读,更多相关《Java中异常处理.docx(12页珍藏版)》请在第一文库网上搜索。

1、第13章异常课堂练习(2理论+2习题课+2上机)【教学目标】 了解异常和异常处理的概貌(第13.2节)。探究使用异常处理的优点(第13.3节)。区别异常的类型:Ri(致命的)和EXCemion(非致命的),以及必检和免检异常(第13.4节)。 在方法头中声明异常(第节)。在方法中抛出异常(第节)。 编写try-catch块处理异常(第节)。 解释异常是如何传播的(第节)。 在trvcatch块中使用Rna1IV子句(第13.6节)。只为非预期错误使用异常(第13.7节)。在闻电块中重新抛出异常(第13.8节)o 创建链式异常(第13.9节)。 定义自定制的异常类(第13.10节)。【教学重点】

2、了解异常的处理机制 异常的解决方法 Exception类的作用及其使用方法必检异常、免检异常的特点【基本知识点】1、常见异常演示(1)算数异常:在算术运算中,0作为除数时,系统将产生该异常,示例:pub1icstaticvoidmain(Stringargs)intx=10;inty=0;intm=xy;Exceptioninthreadmain:/byzeroatexception.NotChecketException.main(NOtCheCketEXCePtiOn.java:7)在数组下标越界时,将产生该异常,示例:pub1icstaticvoidmain(Stringargs)int

3、arr=1,2,3;System.out.printin(arr3);)Exceptioninthread,main:3atexception.NotChecketException.main(NotCheCketEXCePtiOn.java:6)(3)数组存储异常:java.1ang.ArrayStoreException在数组中存入与之声明类型不符的类型,将产生该异常,示例:pub1icstaticvoidmain(Stringargs)boo1eanbfa1se,true,fa1se;intattr=1,2,3;System.arraycopy(attr,O,b,O,1);)Except

4、ioninthreadmainatjava.1ang.System.arraycopy(NatiVeMethod)atexception.NotChecketException.main(NotCheCketEXCePtion.java:7)将对象A转换成为对象B时,如果A既不是与B同一个类,也不是B的子类,将产生该异常,示例:pub1icstaticvoidmain(Stringargs)Objectobj=newObject();intin=(int)obj;Exceptioninthread,main:java.1ang.ObjectcannotbecasttoIatexception.

5、NotChecketException.main(NotCheCketEXCePtion.java:6)引用空对象的实例或方法时,将产生该异常。示例:pub1icstaticvoidmain(Stringargs)Stringstr=nu11;System.out.printin(str.1ength();Exceptioninthreadmain2、try.catch语句捕获异常pub1icc1assExceptionDemo1pub1icstaticvoidmain(Stringargs)inti=1,2,3);try(System,out.printIn(iO=,*+iO);System

6、.out.printIn(,i3=+i3);catch(Array1ndexoutofBoundsExceptione)SVStem.out.printin(出现异常”e.getMessage();)System.out.printIn(i1=+i1);)iO=1出现异常3i1=2以上面的程序运行结果可以发现,在程序中加入异常处理代码后,当异常发生时,整个程序没有因为异常的出现而中断执行。3try.CatChfina11y语句捕获异常pub1icc1assExceptionDemo4pub1icstaticvoidmain(String)args)inti=1,2,3);try(System.

7、out.printIn(ui0=+iO);System.out.printIn(ui3=+i3);catch(Array1ndexOutOfBoundsExceptione)SyStem.out.printin(出现异常+e.getMessage();fina11ySystem.out.printin(,无论是否有异常,都会执行fina11y语句*,);)System.out.printIn(ui1=+i1);iO=1出现异常3无论是否有异常,都会执行fina11y语句i1=2其中,不论try代码块中发生了哪种异常,也不论try代码块和CatCh代码块是否可以正常执行,fina11y代码块都保

8、证会执行。即使前面的ty.CatCh代码块都无法捕获这个异常,或者在CatCh代码块中还有其他异常产生,在将新的异常传递给java运行时环境之前都会先执行fina11y代码块。4、多个catch代码块pub1icc1assExceptionDemoSpub1icstaticvoidmain(Stringargs)Fi1eReaderfr=nu11;try(fr=newFi1eReader(test.txt);fr.read();catch(Fi1eNotFoundExceptione)/TODOAuto-generatedcatchb1ocke.printStackTrace();catch(

9、IOExceptione)/TODOAuto-generatedcatchb1ocke.printStackTrace();fina11ytry(fr.c1ose();catch(IOExceptione)/TODOAuto-generatedcatchb1ocke.printStackTrace();)使用多个CatCh语句块的时候,请注意CatCh代码块的排顺序问题。CatCh代码块捕获异常是按照顺序的,如果前面已经有一个异常类型被捕获了,但又同时满足后面的异常类型时,就不会被捕获了。5、在调用方法出处理被抛出的异常pub1icc1assException6pub1icstaticvoid

10、arrExcetion()throwsIOExceptionFi1eReaderfr=newFiIeReader(不存在的文档.txt”);fr.c1ose();)pub1icstaticvoidmain(Stringargs)tryarrException();catch(IOExceptione)/TODOAuto-generatedcatchb1ocke.PrintStackTrace();)在上面的程序中,“不存在的文档”表示在同一个目录下没有该文档。当arrException()方法产生了异常,此方法并不作处理,而是交由调用arrException()方法的main方法处理。6、错误

11、的使用throws6pub1icc1assExceptionDemo?pub1icstaticvoidQrrEXCeP七ion。throwsFXCePtiOnFi1eReaderFr-newFi1eReQder(”不存在的文档.七xt);9 fr.c1ose();10 )pub1icstaticvoidmain(StringQrgS)12 tryQ1314自151617181920烈期c3.i;catch(IOExceptione)/TODOAuto-generatedcatchb1ocke.printStackTrace();)arrException()方法的main方法能处理的异常范围大

12、,所以编译错误。7、主方法main使用throws关键字pub1icc1assExceptionDemo8pub1icstaticvoidarrException()throwsExceptionFi1eReaderfr=newFiIeReader(不存在的文档.txt);fr.c1ose();pub1icstaticvoidmain(Stringargs)throwsExceptionarrException();Exceptioninthreadmain”:不存在的文档.txt(Nosuchfi1eordirectory)atjava.io.Fi1eInputStream.open(Nat

13、iVeMethQd)atjava.io.Fi1eInputStream.(Fi1eInputStream.java:146)atjava.io.Fi1eInputStream.(Fi1eInputStreamJava:101)atjava.io.Fi1eReader.(Fi1eReader.java:58)atexception.ExceptionDemoS.arrException(EXCePtionDemo8.java:8)atexception.ExceptionDemoS.main(ExceptionDemo8.java:12)8、若需要在程序中自行抛出异常,可以使用throw关键字。

14、ThrOW语句可以单独使用,用于方法体内部,throw抛出的是异常类的实例。如果抛出了检查异常,则还应该在方法头部声明方法可能抛出的异常类型,该方法的调用者也必须检查处理抛出的异常。如果抛出的而是EITOr或RuntimeException,则该方法的调用者可选择是否处理该异常。示例:自行抛出免检异常pub1icc1assExceptionDemo9pub1icstaticvoidarrException()thrownewNu11PointerException(自行抛出的免检异常一空指针异常”);pub1icstaticvoidmain(Stringargs)try(arrException();catch(Nu11PointerExceptione)e.PrintStackTrace();)自行抛出检查异常pub1icc1assExceptionDemo1Opub1icstaticvoidarrExcetion()throwsIOExceptionthrownew工OEXCePtion(自行抛出的免检异常-工。异常”);pub1icstaticvoidmain(Stringargs)try(arrExce

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服