1. Throwable的方法

          String getMessage()

          String getLocalizedMessage()
          String toString()
          void printStackTrace()
          每個方法都比前一個提供更多的信息

          2. 重新拋出異常

          catch (Exception e) {

          System.err.println(“An exception was thrown”);

          throw e;

          }

          重拋異常會把異常拋給上一級環境中的異常處理程序,同一個try快的后續catch字句將被忽略。

          由于只是把當前異常對象重新拋出,printStackTrace()方法顯示的將是原來的異常拋出點的調用棧信息,而非重新拋出點的信息。要想更新這個信息,把throw e;改成

          throw e.fillInStackTrace();

          3. 異常鏈

          有時候你需要處理一個異常并拋出另一個,但仍要保持原異常的信息,這被成為異常鏈。

          Throwable的三個基礎子類Error, Exception, RuntimeException都有一個接收cause參數的構造器。如果想建立這三個子類以外的異常鏈,就得使用initCause()方法。

          4. 標準Java異常

          Throwable有兩個直接子類:Error類代表了系統運行期錯誤,通常情況不用捕獲;Exception類則是Java類庫、用戶的方法。通常要處理的是Exception

          當然,異常類中最重要的還是類名。

          異常并非都在java.lang中,有些還在util, net, io等庫中。

          5. RuntimeException

          RuntimeException通常由Java自動拋出,如

          if (reference == null) throw new NullPointerException();

          是多余的。

          如果一個RuntimeException被拋出后一直到main方法也未被處理,printTraceStack()方法被自動調用。

          6. finally

          沒有垃圾收集器或析構函數自動調用的語言中,finally的重要性在于釋放內存。而Javafinally則多用在使對象恢復到原來的狀態,如打開的文件、網絡連接,在屏幕上的繪圖等。

          7. 異常丟失

          try {

          lm.f();

          } finally {

          lm.dispose();

          }

          如果lm.f()lm.dispose()都會拋出錯誤的話,f()中拋出的錯誤會被徹底丟失。C++中就不存在這個問題。

          所以對于會拋出錯誤的方法,最好將他們放入每一個try-catch塊中。


          posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2.23 Java notes - Error Handling with Exceptions

          Posted on 2007-04-22 20:25 ZelluX 閱讀(250) 評論(0)  編輯  收藏 所屬分類: OOP
          2007-02-23 19:38:46
          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 龙山县| 武乡县| 军事| 天长市| 五大连池市| 宜黄县| 通江县| 罗甸县| 保德县| 定兴县| 海兴县| 丰县| 福州市| 佳木斯市| 上栗县| 咸丰县| 海安县| 石林| 科技| 札达县| 都昌县| 和顺县| 疏附县| 鹤壁市| 杭锦旗| 咸宁市| 涞源县| 周宁县| 深水埗区| 临桂县| 根河市| 孝昌县| 琼中| 磐安县| 丰镇市| 汪清县| 新巴尔虎左旗| 永济市| 三门县| 句容市| 长春市|