- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
问题: 上述捕获的异常都属于运行时异常,错误的原因来自于外部提供了错误的输入,虽然,sum方法捕获了他们,但是有两个问题请考虑: sum捕获了这些问题,真正处理了吗? 调用sum的方法知道自己的错误码? 结论: 运行时异常一般不需捕获(在错误的源头加以避免) 如果需要捕获异常,就需要针对性的处理异常方案 如果方法捕获到异常,但又无法处理,就需要让调用者知道,即将异常报告给调用者,由调用者处理 9.2.4 finally语句 finally语句在try/catch/finally是一个可选的部分。finally语句定义一个总是执行的代码块,而不考虑异常是否被捕获。所以它提供了在try/catch代码块执行结束后的后处理机制。例如前面的FileExceptionDemo 中对于创建Scanner对象,应该向下面一样处理: public void showFile(String fileName) { Scanner reader = null; try { File f = new File(fileName); reader = new Scanner(f); while (reader.hasNext()) { System.out.println(reader.next()); } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (reader != null) { reader.close(); } } } 关于finally 如果try-catch后有finally,则它是try和catch执行后必经的处理 一个try块可以不执行finally子句就能够退出的唯一方法是通过调用System.exit()方法来实现的。 异常发生后的程序流向 如果在try代码块执行中发生了异常,则寻找匹配的异常处理,执行对应异常的处理代码,然后如果有finally块,则执行,执行后顺序执行finally块以后的代码,中间任何地方都不会自动返回(即使在catch中恢复了正常条件,也不会再回到原来发生异常的try中继续执行) 自定义异常 什么时候需要自定义异常 当用户不能通过返回值向用户反馈程序处理中发生的错误情况时,可以通过抛出异常进行告知。 用户定义异常是通过扩展Exception类或子类来创建的一种具有特殊用途的子类,这种异常类可以包含一个“普通”类所包含的任何东西。 9.3自定义异常 可检测异常 可检测异常就是必须按照异常处理机制进行控制的异常。 自定义一个检测异常是通过扩展Exception类或子类(非RuntimeException及其子类)来创建。 非检测异常 非检测异常继承于RuntimeException及其子类,程序可以对一个可能出现的非检测异常不必控制 。 //程序9-4:一个检测异常,用于表明取款时账户余额不足 public class InsufficientFundsException extends Exception{ public InsufficientFundsException(int balance) { super(当前余额是+balance); } } //程序9-5:一个非检测异常,即运行时异常,用于表明取款时账户余额不足 public class InsufficientFundsException extends RuntimeException{ public InsufficientFundsException(int balance) { super(当前余额是+balance); } } 9.4方法声明抛出异常 语法 (方法声明中的异常) type methodName([type para1[,…]]) throws Exception1[,Exception2…]{ … } public static int parseInt(String?s) throws NumberFormatException 注: 如果一个方法可能抛出的异常属于运行时异常,则不必声明(不声明不等于不会抛出) 一个方法可以声明抛出多种异常,之间用逗号分开; 一个方法如果声明可能抛出checked Exception,则调用者必须负责处理 如果调用者不想使用try-catch机制处理可能的checked Exception,则自己也需声
您可能关注的文档
最近下载
- 高中地理人教版必修 第二册第三章 产业区位因素第三节 服务业区位因素及其变化.pptx
- 医养中心营销策划方案.pdf VIP
- 2025年医疗服务行业人力资源报告:医护人员职业发展现状与趋势.docx
- 电气设备-独家解析-特斯拉4680电池结构与工艺设计-杭州车知知.docx
- 民族团结进步.pptx VIP
- 【OBE课程改革】《统计学》课程教学模式创新与实践.pdf VIP
- 武汉地区区域工程地质及水文地质概况、成井方法、基坑工程连通性抽水试验、降水水位计算与预测、回灌试验技术要求.pdf VIP
- 生产车间5s管理制度.docx VIP
- 【完整版】视频会议系统_本科毕业论文设计.docx VIP
- 国新基金组织架构.docx VIP
文档评论(0)