- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[哲学]第七讲 通过异常处理错误
Java编程思想 Java语言与面向对象程序设计第七讲 第9章:通过异常处理错误 Java的基本理念是“结构不佳的代码将不能运行”。 编译期的错误会由编译器侦测到 执行期的错误会引发异常 异常的定义 异常是执行期的错误条件 异常阻止你的程序正常的运行 异常由异常控制模块处理 异常处理是 Java 中唯一的错误报告机制,并且通过编译器强制执行 普通问题是指,你在当前环境下能得到足够的信息,总能处理这个错误。 而对于异常情形,你就不能继续下去了,因为你在当前环境下无法获得必要的信息来解决问题。你所能做的就是从当前的环境中跳出,并且把问题提交给上一级别的环境。这就是抛出异常时所发生的事情。 除数为零的情况: 基本异常 产生一个异常时: 首先创建异常对象:在内存“堆”里,使用new来创建 随后,停止当前执行路径(不可沿这条路径继续下去) 然后从当前的环境中释放出异常对象的reference 此时,异常控制机制会接管一切,并开始查找一个恰当的地方,来继续执行程序。 这个恰当的地方就是“异常处理程序” ,它的任务是将程序从错误状态中恢复:以使程序能要么换一种方式运行,要么继续运行下去。 异常参数 和Java的其他任何对象一样,需要用new在内存堆里创建异常,并需调用一个构造函数。 在所有标准异常中,存在着两个构造函数: 第一个是默认构造函数 第二个是接受字符串作为参数,用来把相关信息放入异常对象的构造器: 异常参数举例:举一个抛出异常的简单例子。对于对象引用t,传给你的时候可能尚未被初始化。所以在使用这个引用调用其方法之前,你会先对引用进行检查。你可以创建一个代表错误信息的对象,并且将它从当前环境中“抛出”,这样就把错误信息传播到了“更大”的环境中。 捕获异常异常处理的好处之一就是,使你得以先在一个地方专注于正在解决的问题,然后在别的地方处理这些代码中可能发生的错误。 Throw: Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 Catch:当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 异常处理程序 try { // Code that might generate exceptions } catch(Type1 id1) { // Handle exceptions of Type1 } catch(Type2 id2) { // Handle exceptions of Type2 } catch(Type3 id3) { // Handle exceptions of Type3 } // etc... 异常捕捉:try, catch 和 throw 在这个try块里“尝试”调用了一些(可能产生异常的)方法,然后只需在一个地方就可以捕获所有异常,抛出(throw)的异常必须在某处得到处理。 异常处理程序必须紧跟在try块之后。当异常被抛出时,异常处理机制将负责搜寻参数与异常类型相匹配的第一个处理程序。然后进入catch子句执行,此时认为异常得到了处理。 终止 与 恢复 在异常控制理论中,共存在两种基本方法 终止:Java和C++提供了对这种方法的支持,没有办法返回异常发生的地方 恢复:假定纠正当前的状况下会成功执行,在异常得到控制以后仍然想继续执行 创建自己的异常(1) 类名称: 用于标识异常的类型 一定要继承某个既有的异常型别 创建自己的异常(3) 额外的数据成员 重载的构造函数 覆盖Throwable.getMessage( ) 方法: 提供更加详细的信息 见 ExtraFeatures.java: 异常说明 一种方式,让用户知道在使用这个方法的时候,有可能会发生异常,做好处理准备。 如果你的程序掷出异常却未进行捕获,那你必须指定 “throws” 关键字 编译器会执行:侦测到的异常 RuntimeException 和它的派生类不需要 “throws”关键字 异常掷出: void f() throws a, b, c {…} a,b,c 是可能引发异常的类型 没有异常掷出: void f(); 捕捉所有的异常: 编写的异常(用throw)、程序的异常(不用throw) 异常的方法:从基类Throwable继承的方法 String getMessage( ):取得细节消息 String getLocalizedMessage: 取得细节消息(特定语系) String toString: 返回
原创力文档


文档评论(0)