java exception 二次抛出_Java-Exception.ppt

您所在位置:网站首页 > 海量文档

&nbsp>&nbsp计算机&nbsp>&nbspJava

2a1a028d081056ab14b40d3afcc4d675.gif

Java-Exception.ppt31页

本文档一共被下载:2377011b61454b208b34ad77b4c31088.gif次,您可全文免费在线阅读后下载本文档。

072ad097814a33d1ad18e33ca14a5a9e.png

9ec2792a743ebdf4575ee09a03c275ea.png

7af312d1be2cfc1e59f15880bb7a7e7a.png

5f207613e329ca76dc87c76d3ff77e64.png

adf7aa3071c520b8a2063089f549261c.png

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

2.该文档所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值,立即自动返金币,充值渠道很便利

Java Exceptions 什么是exception?“物理的”、“逻辑的”,“现 实的”,“虚拟的”… 如何处理exception?“抛出”(throw,throws),“扑获”(catch),“善后”(finally)... “物理”与“现实”的exception 能意外中断程序控制流的事件。 试图打开一个不存在的文件; 试图与一个有问题的网络端口建立连接 数组下标越界 除数为零 试图从一个已经关闭了的流读取数据 一种使应用程序控制流转向系统程序(相对而言)的意外事件 处理exception,就是使这种控制流的转向在应用程序内“受控”发生。(如同启用一方法) “原始”的办法 …; 产生a; x = b/a; // 可能出问题 变成: ... 产生a; if (a != 0) { x=b/a;} else {print “message” ; return;} 或者 ... 产生a; if (a != 0) { x=b/a;} else {return(-101) ;} 认识 “处理”之后,“意外”就不再发生 -- 控制流都是事先设计的。 两种最“通俗”的意外信息传递方式 一段相关文字: 用户知道发生情况了 一种返回码:让调用者知道发生了什么情况 当然也可能混合使用。 若意外情况种类很多,这两种方式都不理想 程序代码混乱 返回码的一致性在不同的软件包之间很难维持。 Java Exception Model是这两种做法的一种普化 将“现实的”exception分成两大类 Error. 指那些致命性的意外情况,例如JVM的内部错误,通常程序员无能为力处理。 Exception. 那些可能在应用程序中检测到,并得到适当处理的意外情况,称为“异常”。 RuntimeException checked exceptions 用对象来表达所有的意外情况, 显然是“一段异常信息”和“一个返回码”的普化. “逻辑的”exception:对象 Java决定用对象来表达所有的意外情况,显然是“一段异常信息”和“一个返回码”的普化。 将意外情况分为Error和Exception两个子类,它们的共同父类为Throwable (含一String) 用户自定义的意外情况也都必须是Throwable,即它的直接或间接子类。(习惯上, 人们常让它们直接extends Exception) 这样的”异常“也就不一定非是对应某种现实的意外情况,可以是“虚拟的”(尽管最好不用)。 关于Throwable类 java.lang.Throwable, Object的直接子类 构造函数 Throwable(); // 得到对象生成时方法调用栈的一个snapshot, 用于提供情况发生的线索 Throwable(String); // 用于提供一段关于异常的message 典型方法 getMessage(), printStackTrace(); 例子: 定义“异常”类 假定我们需要反映“属性不存在”的异常情况. public class NoSuchAttr extends Exception { public String attrName; public Object obj; NoSuchAttr(String name, Object nogood) { super(“No attribute named \”” + name + “\” found”); attrName = name; obj = nogood; } // 新添构造函数 } // 除了一段message, 可由getMessage()读出. 还有具体信息供进一步分析. 为什么需要自定义异常 直接用Java的Exception类在一些简单场合是可以的. 但自定义异常能够 表达更丰富的信息, 例如不仅一段human readable message, 还可有更丰富的含义. 提供更明确的指示. 不同的异常类型本身就表示着不同的含义. 在一个方法体中可能出现几种不同的异常, 若都用Exception表示, 对处理不方便. (见后面的例子) throw/catch, throws 将异常放在其发生的背景中考察,一般地,形象地看,它是在某处被“抛出”,然后在另一处被“接住”(“捕获”)。 main() -> m1 -> m2 -> … -> mi-1 -> mi -> … 事情发生在mi, 最后得到处理可能在m2 如果谁也不接,系统在main之外提供一个缺省catch, 例如打印出所抛出的异常类型和它出现位置。 在“传统的”做法中,“返回码”的层层回传就有这种效果。 throw和throws完成的异常上传机制 返回码回传

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名:

验证码:

c9f2bced460b0329ba0aadbbc3f0fc71.png

匿名?

发表评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值