錯誤是使用者和程式設計師的禍根。開發人員顯然不希望他們的程式在每次轉彎時都掉下來,而用戶現在已經習慣了在程式中出現錯誤,所以他們不情願地接受為幾乎肯定會出現至少一個錯誤的軟體付出代價。
Java的設計目的是讓程式設計師有機會設計一個沒有錯誤的應用程式。當應用程式與資源或使用者互動時,程式設計師可能會知道一些異常,這些異常是可以處理的。不幸的是,也有程式設計師無法控製或簡單忽略的例外情況。簡而言之,並不是所有的異常都是相同的,因此程式設計師需要考慮幾種類型。
異常是導致程式無法在其預期的執行中執行的事件。異常有三種類型-檢查異常、錯誤和運行時異常。
The Checked Exception(檢查異常)
#已檢查異常是Java應用程式應該能夠處理的例外。例如,如果應用程式從檔案中讀取數據,它應該能夠處理FileNotFoundException。畢竟,無法保證預期的文件會出現在它應該出現的位置。檔案系統上可能發生任何事情,應用程式對此一無所知。
讓我們進一步看看這個例子。假設我們使用FileReader類別來讀取字元檔案。如果你看一看Java api中的FileReader建構子定義,你會發現它的方法簽章:
public FileReader(String fileName) throws FileNotFoundException
如你所見,建構子明確宣告FileReader建構子可以拋出FileNotFoundException。這是有意義的,因為檔案名稱字串很可能會不時出錯。請看下面的程式碼:
public static void main(String[] args){ FileReader fileInput = null; //打开输入文件 fileInput = new FileReader("Untitled.txt"); }
從語法上來說,這些語句是正確的,但是這些程式碼永遠不會編譯。編譯器知道FileReader建構函式可以拋出FileNotFoundException,而處理此例外狀況則取決於呼叫程式碼。有兩個選擇-首先,我們可以透過指定一個throw子句來傳遞異常:
public static void main(String[] args) throws FileNotFoundException{ FileReader fileInput = null; //打开输入文件 fileInput = new FileReader("Untitled.txt"); }
或者我們可以處理例外情況:
public static void main(String[] args){ FileReader fileInput = null; try { //打开输入文件 fileInput = new FileReader("Untitled.txt"); } catch(FileNotFoundException ex) { //告诉用户去找文件 } }
編寫良好的Java應用程式應該能夠處理檢查過的異常。
Errors(錯誤)
第二個例外稱為錯誤。當異常發生時,JVM將建立一個異常物件。這些物件都派生自可拋出類別。可拋出類別有兩個主要子類別—錯誤和異常。 Error類別表示應用程式不太可能處理的異常。
這些例外被認為是罕見的。例如,JVM可能會因為硬體無法處理它必須處理的所有進程而耗盡資源。應用程式可以捕獲錯誤並通知用戶,但通常應用程式必須關閉,直到底層問題得到處理。
Runtime Exceptions(運行時異常)
#發生執行階段異常只是因為程式設計師犯了錯誤。你已經寫好了程式碼,編譯器會覺得一切都很好當你運行程式碼時,它會崩潰,因為它試圖存取一個不存在的陣列元素或一個邏輯錯誤導致一個方法被呼叫為空值。或程式設計師可能犯的任何數量的錯誤。但沒關係,我們透過詳盡的測試來發現這些異常,對吧?
錯誤和運行時異常屬於未檢查異常的類別。
以上是Java的異常類型有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!