java编程思想9 . 8 违例匹配

编程入门 行业动态 更新时间:2024-10-09 20:28:20

java编程<a href=https://www.elefans.com/category/jswz/34/1768679.html style=思想9 . 8 违例匹配"/>

java编程思想9 . 8 违例匹配

9 . 8 违例匹配
“掷”出一个违例后,违例控制系统会按当初编写的顺序搜索“最接近”的控制器。一旦找到相符的控制
器,就认为违例已得到控制,不再进行更多的搜索工作。
在违例和它的控制器之间,并不需要非常精确的匹配。一个衍生类对象可与基础类的一个控制器相配,如下
例所示:
//: Human.java
// Catching Exception Hierarchies
class Annoyance extends Exception {}
class Sneeze extends Annoyance {}
public class Human {
public static void main(String[] args) {
try {
throw new Sneeze();
} catch(Sneeze s) {
System.out.println("Caught Sneeze");
} catch(Annoyance a) {
System.out.println("Caught Annoyance");
}
}
} ///:~
Sneeze 违例会被相符的第一个catch 从句捕获。当然,这只是第一个。然而,假如我们删除第一个catch 从
句:
try {
throw new Sneeze();
} catch(Annoyance a) {
System.out.println("Caught Annoyance");
}
那么剩下的catch 从句依然能够工作,因为它捕获的是Sneeze 的基础类。换言之,catch(Annoyance e)能捕
获一个Annoyance 以及从它衍生的任何类。这一点非常重要,因为一旦我们决定为一个方法添加更多的违
例,而且它们都是从相同的基础类继承的,那么客户程序员的代码就不需要更改。至少能够假定它们捕获的
是基础类。
若将基础类捕获从句置于第一位,试图“屏蔽”衍生类违例,就象下面这样:
try {
throw new Sneeze();
} catch(Annoyance a) {
System.out.println("Caught Annoyance");
} catch(Sneeze s) {
System.out.println("Caught Sneeze");

更多推荐

java编程思想9 . 8 违例匹配

本文发布于:2024-02-07 07:46:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754674.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:思想   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!