1. Throwable的方法

          String getMessage()

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

          2. 重新拋出異常

          catch (Exception e) {

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

          throw e;

          }

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

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

          throw e.fillInStackTrace();

          3. 異常鏈

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

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

          4. 標準Java異常

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

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

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

          5. RuntimeException

          RuntimeException通常由Java自動拋出,如

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

          是多余的。

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

          6. finally

          沒有垃圾收集器或析構(gòu)函數(shù)自動調(diào)用的語言中,finally的重要性在于釋放內(nèi)存。而Javafinally則多用在使對象恢復到原來的狀態(tài),如打開的文件、網(wǎng)絡(luò)連接,在屏幕上的繪圖等。

          7. 異常丟失

          try {

          lm.f();

          } finally {

          lm.dispose();

          }

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

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


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

          2.23 Java notes - Error Handling with Exceptions

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 改则县| 垫江县| 民乐县| 涿鹿县| 朝阳区| 吉安县| 汉源县| 澄江县| 张掖市| 阜新| 洛隆县| 巧家县| 平度市| 呼玛县| 靖州| 扶绥县| 怀仁县| 巧家县| 安达市| 西吉县| 政和县| 鲜城| 贞丰县| 馆陶县| 海丰县| 德令哈市| 芜湖县| 马尔康县| 塘沽区| 天台县| 博爱县| 民乐县| 体育| 五寨县| 故城县| 洛浦县| 合作市| 湾仔区| 布尔津县| 永平县| 瓮安县|