ch7 异常处理.pptVIP

  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文档。上传文档
查看更多
ch7 异常处理

Error VS Exception 通过 try{}catch(Throwable a){} 的方式能够处理,但是一般情况下不这样做 原因在于查看Error下面的子类,VirtualMachineError,ThreadDeath,LinkageError,从名字上看出来这些错误都是非常非常严重的,到底是否需要去捕获或者处理呢??。 * * Error VS Exception ?Error的产生一般是JVM或者是操作系统的问题,JAVA 文档中对Error的说明是:Error是Throwable的子类,它的出现说明出现了严重的问题。一般应用程序除非有理由,否则不应该捕捉Error,通常这是非常反常的情况.? Exception的产生主要是在程序运行期间发生的一些不正常事件中止了程序的运行,可以通过JAVA异常处理机制捕获异常并处理,使得程序正常运行下去。这些异常(不正常事件)有别于Error错误,它们通常是可修复的,程序员可以处理的。? * * 运行时异常 VS 受检查异常 1)运行时异常,属于RuntimeException类及子类范围的类(以及衍生类)都属于运行时异常。? 2)受检查异常,在Exception范围内,除了运行时异常的类都是受检查异常类,为checked exception? ? 3)它们之间的区别在于: 例如在代码中写了 throw new Exception(); 和 throw new RuntimeException(); 两者都会在运行期间抛出异常!? ???? 但是在编译阶段前者的属于抛出一个受检查异常,要求对它进行显式的try..catch 捕获处理或者向上一层方法抛出,否则在编译期间就显示错误!? ???? 后者抛出是运行时异常,在编译阶段不予检查,语法上不会显示任何错误!? ???? 所以简单的通过throw手动抛出受检查异常 和抛出运行时异常,前者要求显式处理,后者不要求作出处理。? * * throw VS throws ?1)throw 是手动抛出异常,throw new **Exception(); 抛出的是某一个异常类型的实例.? 2)throws 是方法抛出异常,写在方法声明处 public void show()throws **Exception,**Exception{} 紧跟throws后的是异常类型,而非异常实例,且可以声明抛出多个异常,同时这些异常类型大多都为 受检查异常类型。? 3)throw 是程序员手动抛出异常,一般可用在某种流程控制,需要显示操作失误情况下可对外抛出异常,进入catch代码块,明示操作有误等。? 4) throws 方法抛出异常,通常是告知调用此方法者,本方法有可能抛出一个异常,在调用时应当要进行异常监控。且因为throws方法抛出异常为受检查异常类型,这样就从语法上要求更需要对受检查异常类型作出捕获,或者再次向上抛出。? * * * * 课后习题 什么是异常?为什么要进行异常处理? 如何创建一个自定义异常? 如何抛出系统异常?如何抛出自定义异常? 在什么情况下应使用下面的语句: catch(Exception e){throw e;} 异常处理与传统错误处理方法相比,其优势是什么? 在本章之前我们已经发现,对构造函数检测出的错误进行处理有一些麻烦。试着解释一下为什么利用异常处理可以有效地处理构造函数中的错误。 假设一个程序抛出了一个异常,并开始执行相应的异常处理程序。现在,再假设在该异常处理程序中又抛出了一个同样的异常,这会导致无限循环吗?为什么? * * 课后习题 下面的程序会输出什么?请说出理由。 class MyException extends Exception{} public class Q1{ public static void main(String args[]){ try{throw new MyException();} catch(Exception e){ System.out.println(Its caught!); } finally{ System.out.println(Its finally caught!);} } } } * * 课后习题 下面程序在oneMethod()方法运行正常的情况下将显示什么?请说出理由。 public void test(){ try{ oneMethod();System.out.println(情况1);} catch (ArrayIndexOutOfBoundsException e) { System.out.println(情况2);} catch (Exception e) { System.

文档评论(0)

badjka + 关注
文档贡献者

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

1亿VIP精品文档

相关文档