java基礎(chǔ)檢查和未檢查異常處理詳解
程序在運行時如果出錯,編譯器會拋出異常,異常如果沒有被捕捉處理,程序會終止運行。異常分為未檢查異常和已檢查異常,以下對這兩類異常做進一步說明。
檢查異常
已檢查異常(checked exceptions),編譯器強制要求捕獲并處理可能發(fā)生的異常,不處理就不能通過編譯,如:IOException、SQLException以及用戶自定義的Exception異常。如下圖所示,程序運行時會因為IO等錯誤導致異常,要求處理異常,需要手動處理關(guān)閉釋放資源。
繼續(xù)拋出,通過throws exception拋出,代碼如下:
public static void readFile() throws FileNotFoundException { String filename = "D:\\demo1.txt"; File file = new File(filename); BufferedReader reader = null; StringBuffer sbf = new StringBuffer(); reader = new BufferedReader(new FileReader(file)); }
在方法使用 throws FileNotFoundException ,將異常向上拋。
使用try catch或try catch finally對異常進行捕獲然后進行處理,代碼如下:
public static void main(String[] args) { String filename ="D:\\demo.txt"; File file =new File(filename); BufferedReader reader=null; StringBuffer sbf = new StringBuffer(); try { reader = new BufferedReader(new FileReader(file)); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { } }
未檢查異常
未檢查異常(unchecked exceptions),這類異常也叫RuntimeException(運行時異常),編譯器不要求強制處置的異常,如:NullPointerException,IndexOutOfBoundsException,VirtualMachineError等異常。如:以下代碼向上拋出異常,但調(diào)用時編譯器并不強制要求處理異常
public static void convert(String str) throws NumberFormatException{ Long num = Long.parseLong(str); System.out.println(num); }
調(diào)用方代碼如下:
public static void main(String[] args) { convert("ww123"); }
編譯器并未出現(xiàn)強制要求使用處理異常,因為NumberFormatException異常是RuntimeException(運行時異常)。未檢查異常通常處理方法為捕獲、繼續(xù)拋出和不處理,這類異常通常輸出至控制臺,編程人員手動的去查找問題。
總結(jié)
檢查異常是編譯器強制要求捕獲并處理可能發(fā)生的異常,包括IOException、SQLException以及用戶自定義的Exception等;未檢查異常是編譯器不強制要求捕獲并處理可能發(fā)生的異常,包括RuntimeException類異常。JDK常見異常類圖如下:
以上就是java基礎(chǔ)檢查和未檢查異常處理詳解的詳細內(nèi)容,更多關(guān)于java檢查和未檢查異常處理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot 在項目啟動之后執(zhí)行自定義方法的兩種方式小結(jié)
這篇文章主要介紹了SpringBoot 在項目啟動之后執(zhí)行自定義方法的兩種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java基于socket服務(wù)實現(xiàn)UDP協(xié)議的方法
這篇文章主要介紹了Java基于socket服務(wù)實現(xiàn)UDP協(xié)議的方法,通過兩個簡單實例分析了java通過socket實現(xiàn)UDP發(fā)送與接收的技巧,需要的朋友可以參考下2015-05-05