欢迎来到天天文库
浏览记录
ID:48243519
大小:176.00 KB
页数:35页
时间:2020-01-18
《第12讲 Java异常.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、异常异常Java异常的概念和处理机制捕获异常Java异常的分类已检查异常的处理抛出异常自定义异常8/8/20212异常异常示例(ExTest)lisabilykessyExceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:3atorg.broadengate.teach.j2se.exception.ExTest.main(ExTest.java:7)8/8/20213异常异常示例(ExTest)publicclassExTest{publicstaticvoidmain(Str
2、ing[]args){Stringfriends[]={"lisa","bily","kessy"};for(inti=0;i<5;i++){System.out.println(friends[i]);}System.out.println("thisistheend");}}8/8/20214异常异常异常是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的鲁棒性,程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。什么是异常正常情况之外的一种“异常”。在问题发生的时候,
3、我们可能不知具体该如何解决,但肯定知道已不能不顾一切地继续下去。此时,必须坚决地停下来,并由某人、某地指出发生了什么事情,以及该采取何种对策。由于要强制捕获很多异常,开发者很难忽略他们的异常处理代码。这些异常就是我们常说的已检查异常(checkedexceptions)8/8/20215异常Java异常处理机制Java通过面向对象的方法来处理异常。Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。运行时系统在方法的调用栈中查找,从生成例外的方法开始进行回朔,直到找到
4、包含相应例外处理的方法为止,这一个过程称为捕获(catch)一个例外。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。8/8/20216异常捕获异常(例:ExCatchTest)publicstaticvoidmain(String[]args){Stringfriends[]={"lisa","bily","kessy"};try{for(inti=0;i<5;i++){System.out.println(friends[i]);}}catch(java.lang.ArrayIndexOutOfBou
5、ndsExceptione){System.out.println("indexerr");}System.out.println("thisistheend");}8/8/20217异常捕获异常捕获异常是通过try-catch-finally语句实现的。try{......//可能产生违例的代码}catch(ExceptionName1e){......//当产生ExceptionName1型违例时的处置措施}catch(ExceptionName2e){......//当产生ExceptionName2型违例时的处置措施}[finally{..
6、....//无条件执行的语句}]8/8/20218异常捕获异常try捕获违例的第一步是用try{…}语句块选定捕获违例的范围。若位于一个方法内部,并“掷”出一个异常(或在这个方法内部调用的另一个方法产生了异常),那个方法就会在异常产生过程中退出。若不想离开方法,可在那个方法内部设置一个特殊的代码块,用它捕获异常。这就叫作“try块”,因为要在这个地方“尝试”各种方法调用。try块属于一种普通的作用域,用一个try关键字开头:try{//可能产生违例的代码}catch在catch语句块中是对违例对象进行处理的代码,每个try语句块可以伴随一个或多个cat
7、ch语句,用于处理可能产生的不同类型的违例对象。可能有许多catch块,每一个都处理不同的异常。捕获例外的顺序和catch语句的顺序有关,当捕获到一个例外时,剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的例外,然后再逐渐一般化。也就是一般先安排子类,再安排父类。生成的异常必须在某个地方中止。这个“地方”便是异常控制器或者异常控制模块。而且针对想捕获的每种异常类型,都必须有一个相应的异常控制器。异常控制器紧接在try块后面,且用catch(捕获)关键字标记8/8/20219异常捕获所有违例捕获所有违例cat
8、ch(Exceptione){……}这段代码能捕获任何异常,所以在实际使用时最好将其置于控
此文档下载收益归作者所有