在程式開發的過程中,常常會遇到一些異想不到的錯誤,例如:
- 使用者輸入了一個你猜也沒猜到的數值
- 要把資料寫到檔案裡,但發現磁碟空間不夠
- 需要連上網路去抓一個檔案,但電腦現在沒有接上網路
無論這些異想不到的錯誤,是屬於使用者造成的,或是使用者的電腦軟硬體造成,Java 將這些狀況,視為例外或是異常,也是 Exception。
Java 將 Exception 分為三個主要的類別:
必須處理的異常(Checked Exception)
程式運作期間的異常(Runtime Exception)
錯誤 (Errors)
必須處理的異常(Checked Exception)
這類型的異常最大的特色是,在編輯期間會強迫開發人員處理,最常見的例子是 FileNotFoundException 找不到檔案的異常,例如想要使用 FileReader 去讀取一個檔案的時候,編譯器(Compiler) 會強迫開發者處理這個異常。
1 | import java.io.File; |
程式運作期間的異常(Runtime Exception、 Unchecked Exception)
這類型的異常編譯器並不會強迫開發者處理,所以被稱作為 Unchecked Exception 或是 Runtime Exception。最常見的就是 ArrayIndexOutOfBoundsException。
1 | public class Unchecked_Demo { |
錯誤 (Errors)
錯誤與異常可以說是完全不同的東西,錯誤有幾個特性:
- 嚴重程度比較高
- 程式比較難處理的
- 難以恢復的
常見的例如,透過遞迴解決問題時候要小心的 StackOverFlowError:
1 |
|