- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 异常与处理 8.1 处理错误 8.2 异常的捕获 8.3 finally子句 8.1 处理错误 假设当Java程序运行时发生错误,有如下3种。 设备错误 物理限制 代码错误 8.1 处理错误 Java中所有的异常都是从Throwable类中继承出来的子类。图8-1所示为一个简化的异常继承层次图。 8.1 处理错误 从图中我们可以看出,所有的异常都是从Throwable类中扩展出来的,并马上分成两个部分,一个是Error,另一个称为Exception(异常)。 8.1 处理错误 对于扩展于RuntimeException,它是由于程序书写产生的错误,例如: 一个错误的造型转换; 一个越界的数组访问; 一个空指针的访问等。 总之,一切的RuntimeException都是由于本身的错误造成的。RuntimeException同Error异常我们叫做未检查异常,这种异常是不应该产生的,除此以外的异常都称为已检查的异常。 8.1 处理错误 如果在Java程序设计中,调用一个方法时,出现Java不能处理的情况,那就应该抛出一个异常。它不仅告诉Java编译器应该返回什么类型的值,而且告诉编译器可能产生什么样子的错误。 在方法中声明一个异常是在方法的头部表示的。利用关键字throws,表示该方法在运行中可能会抛出的异常。 8.1 处理错误 当调用一个抛出异常的方法时,有两种方式可以处理它,一种方式是继续向外抛出,另一种方式就是解决。 所谓继续抛出也就是我们并不对异常做任何处理,只是把这个异常继续向外抛出,那究竟由谁来处理这个异常呢? 所有抛出的异常最终必须要有一个处理这个异常的方法,什么时候在什么位置处理这个异常是根据程序设计的思想来进行的。 8.1 处理错误 首先应该决定抛出一个什么类型的异常,由于涉及文件的读取肯定属于某种IOException,现在我们就用这个父类来表示需要抛出的异常,如: throw new IOException(); 或者: IOException e = new IOException(); throw e 8.1 处理错误 下面的代码就是一个简单的方法体实现,注意由于在方法体内使用了throw关键字,抛出了一个异常,所以在方法声明中,也同样需要throws指定的异常。 public String readData() throws IOException { … … while(…) { throw new IOException(); } return s; } 8.1 处理错误 throw与throws的区别1. throw代表动作,表示抛出一个异常的动作,throws代表一种状态,代表方法可能有异常抛出。2. throw用在方法实现中,而throws用在方法声明中。3. throw只能用于抛出一种异常,而throws可以抛出多个异常。 8.1 处理错误 设计一个自己的异常类其实是一件很轻松的事情,只要从Exception或IOException中派生一个子类就可以了。一般情况下,这个类要符合下列要求: 有一个默认构造器; 包含一个详细信息字符串参数的构造器。 8.2 异常的捕获 可以说抛出一个异常是相当简单的,抛出这个异常后就不需要再理会它了,但在实际程序设计中,我们必须要有代码捕获这个异常,捕获一个异常必须要有合理的计划与设计,以实现程序的可控制性及合理性。 8.2 异常的捕获 如果想处理一个异常,首先应当捕获这个异常。捕获一个异常是用关键字try来实现的,例如: try { … … Connection conn = DriverManager.getConnection(strURL, strUser, strPassword); … … } 8.2 异常的捕获 有可能抛出异常的代码应该放到try块中,如果我们捕获了一个异常,也就必须要处理它,如果不处理它就没有必要捕获了。所以关键字try不会是单独出现的。如果有try块那必须要有catch块。例如: catch(ExceptionType e) { … … } 8.2 异常的捕获 catch块是用来处理异常的,也就是当我们捕获一个异常时,程序将如何响应。 接下来catch块中的参数ExceptionType应该是什么呢?应该是我们所捕获的异常类,如上例中我们捕获了SQLException: catch(SQLException e) { … … } 8.2 异常的捕获 try/catch块中的代码执行顺序是这样的: 如果try块中的任意代码抛出一个catch块所声明类的异常,那么: 该程序就会跳过try块中的剩余代码;
您可能关注的文档
- 房屋建筑构造课件作者闫培明_第4章节墙体.ppt
- 数控机床控制技术与系统第2版课件作者王侃夫上海市职业技术教育课程改革与教第七章节数控机床PLC.ppt
- 数控机床控制技术与系统第2版课件作者王侃夫上海市职业技术教育课程改革与教第三章节驱动电动机.ppt
- 数控机床控制技术与系统第2版课件作者王侃夫上海市职业技术教育课程改革与教第十章节数控机床故障诊断.ppt
- 新编公共关系实务课件作者李文柱第四单元策划公关专题活动.ppt
- 房屋建筑构造课件作者闫培明_第6章节门与窗.ppt
- 新编公共关系实务课件作者李文柱第五单元协调公共关系处理公关危机.ppt
- 房屋建筑构造课件作者闫培明1_第13章节单层工业厂房的构造.ppt
- 数控机床与编程课件作者刘书华第二章节.ppt
- 新编公共关系实务课件作者李文柱第一单元初识公共关系.ppt
原创力文档


文档评论(0)