国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

缺點:丟失的違例

2019-11-18 13:19:57
字體:
來源:轉載
供稿:網友

  一般情況下,java的違例實施方案都顯得十分出色。不幸的是,它依然存在一個缺點。盡管違例指出程序里存在一個危機,而且絕不應忽略,但一個違例仍有可能簡單地“丟失”。在采用finally從句的一種非凡配置下,便有可能發生這種情況:
  
  //: LostMessage.java
  // 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 {
     lm.f();
    } finally {
     lm.dispose();
    }
   }
  } ///:~
  
  輸出如下:
  
  A trivial exception
      at LostMessage.dispose(LostMessage.java:21)
      at LostMessage.main(LostMessage.java:29)
  
  可以看到,這里不存在VeryImportantException(非常重要的違例)的跡象,它只是簡單地被finally從句中的HoHumException代替了。
  這是一項相當嚴重的缺陷,因為它意味著一個違例可能完全丟失。而且就象前例演示的那樣,這種丟失顯得非常“自然”,很難被人查出蛛絲馬跡。而與此相反,C++里假如第二個違例在第一個違例得到控制前產生,就會被當作一個嚴重的編程錯誤處理。或許Java以后的版本會糾正這個問題(上述結果是用Java 1.1生成的)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑河市| 阳山县| 伊宁市| 建阳市| 柳州市| 齐齐哈尔市| 金门县| 高阳县| 安泽县| 英山县| 噶尔县| 美姑县| 合江县| 巴塘县| 南澳县| 望都县| 岳阳市| 明光市| 鹿泉市| 江西省| 松江区| 加查县| 商河县| 深水埗区| 来凤县| 江津市| 武山县| 金乡县| 静宁县| 西乌珠穆沁旗| 凤山市| 天水市| 区。| 商洛市| 灵台县| 鲜城| 平江县| 金川县| 屏边| 沭阳县| 荣成市|