熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

缺點:丟失的違例

2013-11-15 11:52:12  來源: JSP教程 

  一般情況下Java的違例實施方案都顯得十分出色不幸的是它依然存在一個缺點盡管違例指出程序裡存在一個危機而且絕不應忽略但一個違例仍有可能簡單地丟失在采用finally從句的一種特殊配置下便有可能發生這種情況
  
  //: LostMessagejava
  // How an exception can be lost
  
  class VeryImportantException extends Exception {
   public String toString() {
    return A very important exception!;
   }
  }
  
  class HoHumException extends Exception {
   public String toString() {
    return A trivial exception;
   }
  }
  
  public class LostMessage {
   void f() throws VeryImportantException {
    throw new VeryImportantException();
   }
   void dispose() throws HoHumException {
    throw new HoHumException();
   }
   public static void main(String[] args)
     throws Exception {
    LostMessage lm = new LostMessage();
    try {
     lmf();
    } finally {
     lmdispose();
    }
   }
  } ///:~
  
  輸出如下
  
  A trivial exception
      at LostMessagedispose(LostMessagejava:)
      at LostMessagemain(LostMessagejava:)
  
  可以看到這裡不存在VeryImportantException(非常重要的違例)的跡象它只是簡單地被finally從句中的HoHumException代替了
  這是一項相當嚴重的缺陷因為它意味著一個違例可能完全丟失而且就象前例演示的那樣這種丟失顯得非常自然很難被人查出蛛絲馬跡而與此相反C++裡如果第二個違例在第一個違例得到控制前產生就會被當作一個嚴重的編程錯誤處理或許Java以後的版本會糾正這個問題(上述結果是用Java 生成的)
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19779.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.