《Java学习总结之第八章_异常处理》.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《Java学习总结之第八章_异常处理》.doc

Java学习总结之第八章 异常处理 一、Java异常处理机制概述 1、Java虚拟机用方法调用栈来跟踪每个线程中一系列的方法调用过程。 2、方法中的代码块可能抛出异常,有如下两种处理办法: l 在当前方法中通过try…catch语句捕获并处理异常。例如: public void methodA(int money){ try{ //以下代码可能会抛出SpecialException if(--money = 0) throw new SpecialException(Out of money); } catch(SpecialException e){ //异常处理 } } l 在方法的声明处通过throws语句声明抛出异常,返回给调用者来处理异常例如: 由于方法A不能捕获异常,所以,A就要通过throws语句声明抛出异常,由调用者methodB()来处理异常 public void methodA(int money)throws SpecialException{ //以下代码会抛出SpecialException if(--money = 0) throw new SpecialException(Out of money); } 此时methodB()的定义如下: public void methodB(int money){ try{ methodA(money); } catch(SpecialException e){ //处理异常 } } 如果methodB()也没有捕获SpecialException,而是声明抛出该异常,则Java虚拟机的处理流程将退回到methodB()方法的调用者,此时methonB()方法的定义如下: public void methodB(int money)throws SpecialException{ methodA(money); } 3、当Java虚拟机追溯到调用栈的底部的方法时,如果仍然没有找到处理该异常的代码块,将按以下步骤处理: l 调用异常对象的printStackTrace()方法,打印来自方法调用栈的异常信息。 l 如果该线程不是主线程,那么终止这个线程,其他线程继续正常运行。如果该线程是主线程(即方法调用栈的底部为main()方法),那么整个应用程序被终止。 二、运用Java异常处理机制 1、在Java语言中,用try…catch语句来捕获异常,格式如下: try{ //可能会出现异常的代码 } catch(SQLException e){ //处理操纵数据库出现的异常 } catch(IOException e){ //处理操纵输入流和输出流出现的异常 } 2、finally语句中的代码是在异常处理的任何情况下都必须执行的代码。finally代码块能保证特定的操作总是会被执行,它的形式如下: try{ //可能会出现异常的代码 } catch(Exception e){ //处理异常 } finally{ //特定的操作 } 3、不管try代码块中是否出现异常,都会执行finally代码块。 4、如果一个可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。一个方法可能会出现多种异常,throws子句允许声明抛出多个异常,例如: public void method()throws SQLException,IOException{…} 5、throw语句用于抛出异常,由throw语句抛出的对象必须是java.lang.Throwable类或者其子类的实例。 6、异常处理语句的语法规则: l try代码块不能脱离catch代码块或finally代码块而单独存在。try代码块后面至少有一个catch代码块或finally代码块。 l try代码块后面可以有零个或多个catch代码块,还可以有零个或至多一个finally代码块。如果catch代码块和finally代码块并在,finally代码块必须在catch代码块后面。 l try代码块后面可以只跟finally代码块。 l 在try代码块中定义的变量的作用域为try代码块,在catch代码块和finally代码块中不能访问该变量。 l 当try代码块后面有多个catch代码块时,Java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,如果异常对象为某个异常类型或其子类的实例,就执行这个catch代码块,而不会再执行其他的catch代码块。 l 如果一个检查异常,要么用try…catch语句捕获,要么用throws语句声明将它抛出,否则会导致编译错误。 l throws语句后面不允许紧跟其他语句,因为这些语句永远不会被执行

文档评论(0)

wgvi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档