異常

Java異常是一個對象,全部異常都直接或間接的繼承Throwable類,異常層次結構如圖:java

 

Error類表明錯誤,指程序沒法恢復的異常狀況,常見的Error類例如內存溢出StackOverflowError等。spring

 

Exception類表明異常,指程序有可能恢復的異常狀況,分爲RuntimeException和checkedException兩種。編碼

checkedException可檢查異常,須要在編碼時進行處理的,如IOException等。對象

RuntimeException運行時異常,是在程序運行時發生的異常,沒法預先捕捉處理。blog

 

異常常常經過try catch語句塊來進行處理,也能夠經過throws/throw將錯誤拋出到上層處理繼承

finally用在catch語句塊後面,不管是否發生異常,finally代碼塊總會被執行內存

在jdk7以後,提供了語法糖,更優雅的解決方式 try-with-resourceget

try (FileInputStream inputStream = new FileInputStream(new File("test"))) {
    System.out.println(inputStream.read());
} catch (IOException e) {
    throw new RuntimeException(e.getMessage(), e);
}

 對代碼反編譯發現仍使用了finally進行處理input

 

能夠經過繼承已有的Exception類來自定義異常,一般使用try catch捕獲處理,若是須要向外拋出,可繼承RuntimeException類it

 

spring中能夠經過註解@ControllerAdvice,@ExceptionHandler(Exception.class)來自定義異常處理

相關文章
相關標籤/搜索