java的異常和斷言學習筆記

來源:互聯網
上載者:User

異常

在java中,一個異常對象總是Throwable子類的執行個體。

Error類體系描述了Java運行系統中的內部錯誤以及資源耗盡的情況。

由編程導致的錯誤,會導致RuntimeException異常。而其他錯誤原因導致的異常----例如,因為I/O錯 誤導致的曾經運行正確的程式出錯,都不會導致RuntimeException異常。

從RuntimeException衍生出來的異常包括下面的問題:1〉錯誤的類型轉換;2〉數組越界訪問;3〉試 圖訪問一個null 指標。

不是從RuntimeException衍生出來的異常包括:

1〉試圖從檔案尾後面讀取資料;

2〉試圖開啟一個錯誤格式的URL;

3〉試圖用一個字串來構造一個Class對象,而當該字串對應的類並不存在;

處理RuntimeException的原則是:如果出現RuntimeException,則一定是你的錯誤;

不同的瀏覽器可以處理不同類型的URL,所以,URL格式是否錯誤依賴於具體的環境,而不僅僅是程式 代碼;

Java語言規範中將任何Error的子類以及RuntimeException的子類都稱為未檢查異常,而其他的異常則 稱為已檢查異常;

僅僅在以下4種情況下,才會拋出異常:

1〉調用了一個會拋出"已檢查異常"的方法,例如BufferReader類的readLine方法;

2〉程式運行過程中發生了錯誤,並且用throw語句拋出一個"已檢查異常";

3〉程式錯誤,例如a[-1]=0會拋出一個"未檢查異常"如數組下標越界(ArrayIndex-- OutOfBoundsException);

4〉Java虛擬機器或者是執行階段程式庫出現了內部錯誤;

不需要聲明java的內部錯誤。一個方法必須聲明它可能拋出的全部"已檢查異常"。如果在自己的子類 中覆蓋了一個來自父類的方法。特別需要注意的是,如果父類方法根本沒有拋出任何"已檢查異常",則子 類也只能如此;

在Java中,沒有throws指示符的方法是不能拋出任何已檢查異常的;

對於try/catch代碼塊,如果方法內的任何代碼拋出了一個異常,同時它的類型沒有在catch中指定, 則方法會立即退出;

應捕捉並且處理那些已知如何處理的異常(用catch),而傳遞那些不知如何處理的異常(用 throws);

對於try/catch/finally代碼塊,無論是否捕獲異常,都會執行finally從句中的代碼;

雖然Java程式員必須在finally從句中人工設定代碼來回收資源,但由於Java內建有"垃圾收集"機制, 所以只有極少數的資源才要求人工進行回收;

actionPerformed方法不能拋出任何已檢查異常;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.