手指飞扬的Blog  
Living is a program, programing is living.
日历
<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
统计
  • 随笔 - 1
  • 文章 - 9
  • 评论 - 1
  • 引用 - 0

导航

常用链接

留言簿(1)

随笔档案

文章分类

求田问舍

搜索

  •  

最新评论

 
Java的异常实现也有瑕疵,用某些特殊的方式使用finally子句,就会发生这种情况:

代码:

 1 public class ExceptionLost {
 2     /**
 3      * @param args
 4      */
 5     public static void main(String[] args) {
 6         try {
 7             ExceptionLost exLost = new ExceptionLost();
 8             try {
 9                 exLost.throwV();
10             } finally {
11                 exLost.dispose();
12             }
13         } catch (Exception e) {
14             System.out.println(e);
15         }
16     }
17 
18     public void throwV() throws VeryImportantException {
19         throw new VeryImportantException();
20     }
21 
22     public void dispose() throws HoHumException {
23         throw new HoHumException();
24     }
25 }
26 
27 class VeryImportantException extends Exception {
28     public String toString() {
29         return "A very Important exception!";
30     }
31 }
32 
33 class HoHumException extends Exception {
34     public String toString() {
35         return "A trivial exception";
36     }
37 }


结果:A trivial exception

结论:从输出中可以看到VeryImportantException不见了,它被finally子句的HoHumException所取代。事实上如果从finally子句直接返
            也会丢失异常。

Ps: 具体内容看Thanking in Java第四版268页。
posted on 2009-04-05 19:12 Finger_Flying 阅读(596) 评论(0)  编辑 收藏 引用 所属分类: java
只有注册用户登录后才能发表评论。
 
Copyright © Finger_Flying Powered by: 博客园 模板提供:沪江博客