- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 包与异常1
* * * * * * * 异常处理机制 2. 捕获异常 异常抛出后,运行时系统从生成异常对象的代码开始,按方法的调用顺序进行查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法为止,这个过程称为捕获(catch)异常。 异常处理机制就是: 当语义限制被违反时,将会抛出异常对象,并将引起程序流程从异常发生点转移到程序员指定的处理异常方法代码处进行异常处理。 异常的处理 异常处理语句格式为: try {…} // 被监视的代码段,一旦发生异常,则交由其后的catch代码段处理 catch (异常类型 e) {…} // 要处理的第一种异常 catch (异常类型 e) {…} // 要处理的第二种异常 … finally {…} // 最终处理 异常的处理 try 和catch 是Java中用来处理异常的关键字,其作用如下: try语句 : 用来监视可能引起异常的语句,写程序时,应该将可能出现异常的语句代码放入此语句块中。 catch语句:异常发生时要执行的异常处理程序,它可以捕获到try{}语句块中抛出的异常对象,并可以按人为的要求进行异常信息的输出。 使用try ……catch语句,能保证程序发生异常时,仍能执行完成。 异常的处理 try 和catch 是Java中用来处理异常的关键字,其作用如下: 如果直到最后还是没有发现处理异常的catch语句,那么在finally子句执行完后,调用ThreadGroup的unCaughtException方法,终止当前的线程(即发生了异常的线程)。 如果希望在异常发生时能确保有一段代码被执行,那么应该使用finally子句。这样即使发生的异常与catch所能捕获的异常不匹配也会执行finally子句, 异常的处理实例 【案例分析3】 public class ExceptionCase { public static void main(String[] args) { Patient p = new Patient(张三,0,10,支气管肺炎); // 生成一个Patient对象 try //对挂号方法进行异常处理,此处必须处理异常 { p. registration ( ); } catch (Wrong w) // 捕获自定义异常对象w { System.out.println(w); //输出自定义异常对象w的信息 } finally // finally 语句块总会执行 { System.out.println((温馨提示:请遵守医院规定,先挂号,再看医生!)); } Doctor d= new Doctor(支气管肺炎,60); // 生成一个医生对象 try // 对治疗方法进行异常处理,此处必须要捕获异常 { d.treatment(p); } catch (Wrong w1) { System.out.println(w1); } finally { System.out.println((温馨提示:只有正确的用药,才能保证病人的生命安全!)); } } } 异常的处理实例 运行结果为: 异常的处理实例 如果将运行类(ExceptionCase)中的代码Patient p = new Patient(张三,0,10,支气管肺炎);修改为Patient p = new Patient(张三,1,10,支气管肺炎);即将标志变量id的值改为1,说明已挂号,则程序运动结果为: 异常的处理实例 如果再将用药量进行变化,修改运行类(ExceptionCase)中的注释(9)处,将Doctor d= new Doctor(“支气管肺炎”,60)改为Doctor d= new Doctor(“支气管肺炎”,45);即将用药量改为45万单位每日,此时用药量范围正确,程序运行结果为: 异常的处理 在某些情况下,同一段程序可能产生不止一种异常情况。可以放置多个catch子句来检查每一种异常类型,第一个与异常匹配的catch就会被执行。如果一个异常类和其子类都出现在catch子句中,应把子类放在前面,否则将永远不会到达子类。 异常的处理实例 public class ZeroAndOutofBound { public static void main(String[] args) { int a[]=new int[3]; // 定义一个长度为3的整型数组,注意数组下标是从0开始的 try { System.out.println(a
文档评论(0)