java學習(八) —— 異常及異常處理

前言

  1. 概述:異常就是java程序在運行過程當中出現的錯誤。
  2. 異常發生時如何處理,java提供瞭解決辦法:異常處理機制。
  3. java中的異常能夠是函數中的語句執行時引起的,也能夠是程序員經過throw語句手動拋出。
  4. 只要在java程序中產生了異常,就會用一個對應類型的異常對象來封裝異常,JRE會試圖尋找異常處理程序來處理異常。
  5. JDK中內建類一些常見的異常類,咱們也能夠自定義異常。
  6. Throwable類是java異常類型的頂層父類,一個對象只有是Throwable類的直接或間接實例,他纔是一個異常對象,才能被異常處理機制識別。

異常分類

  1. 檢查性異常:html

    (1)最具表明性的檢查性異常是用戶錯誤或問題引發的異常,這是程序員沒法預測的。
    (2)例如要打開一個不存在文件時,一個異常就發生了,這些異常在編譯時不能被簡單的忽略。
  2. 運行時異常:java

    (1)運行時異常是可能被程序員避免的異常。
    (2)與檢查性異常相反,運行時異常能夠在編譯時被忽略。
  3. 錯誤:程序員

    (1)錯誤不是異常,而是脫離程序員控制的問題。
    (2)錯誤在代碼中一般被忽略。
    (3)例如,當棧溢出時,一個錯誤就發生了,它們在編譯時也是檢查不到的。
  4. 異常分類圖解:
    圖片描述

Error和Exception類

  1. java標準庫內建了一些通用的異常,這些類以Throwable爲頂層父類。
  2. Throwable又派生出Error類和Exception類。
  3. Error類:數據庫

    (1)Error類以及他的子類的實例,表明了JVM自己的錯誤。
    (2)錯誤不能被程序員經過代碼處理,Error不多出現。
    (3)所以,程序員應該關注Exception爲父類的分支下的各類異常類
  4. Exception類:函數

    (1)Exception及他的子類,表明程序運行時發送的各類不指望發生的事件。
    (2)能夠被java異常處理機制使用,是異常處理的核心。

異常處理

  1. 異常處理機制能讓程序在發生異常時,按照代碼預先設定的異常處理邏輯,針對性的處理異常,讓程序盡最大可能的恢復正常並繼續執行,且保持代碼的清晰。
  2. java中,異常處理的任務就是將執行控制流從異常發生的地方轉移到可以處理這種異常的地方去。
  3. 在編寫代碼處理異常時,對於檢查異常,有兩種處理方式:spa

    (1)使用try...catch...finally語句塊處理
    (2)在函數簽名中使用throws聲明交給函數調用者caller去解決
  4. try...catch...finally語句塊:code

    (1)try塊中放可能發生異常的代碼;
    (2)若是執行完try而且不發生異常,則接着去執行finally塊代碼以及finally以後的代碼;
    (3)若是執行try中代碼發生異常,就會嘗試匹配catch塊;
    (4)每個catch塊用於處理一個異常;
    (5)異常匹配是按照catch塊的順序從上往下尋找的,只有第一個會匹配到的catch塊會被執行。
    (6)try塊中的局部變量和catch塊中的局部變量,以及finally中的局部變量,它們之間不能夠共享使用;
    (7)finally塊無論異常是否發生,只要對應的try塊執行了,它必定會執行。
    (8)finally塊一般用來作資源釋放操做,關閉文件或者關閉數據庫等操做。
  5. throws/throw:htm

    (1)若是一個方法沒有捕獲到一個檢查性異常,那麼該方法必須使用 throws 關鍵字來聲明。
    (2)throws 關鍵字放在方法簽名的尾部。
    (3)throws僅僅是將函數中可能出現的異常向調用者聲明,而本身並不處理異常。
    (4)採用這種異常處理的緣由多是:方法自己不知道如何處理這種異常,或者說讓調用者處理更好,調用者須要爲可能發生的異常負責。
    (5)也能夠使用 throw 關鍵字手動拋出一個異常,不管它是新實例化的仍是剛捕獲到的。
    (6)throw語句的後面必須是一個異常對象。

參考連接

http://www.importnew.com/2661...對象

相關文章
相關標籤/搜索