《瘋狂的JAVA講義》筆記-第10章異常
try...catch...finally
塊- try 塊後面必須出現 catch 塊或者 finally 塊或者同時出現
- 在 try 塊中遇到
return
並不會馬上返回,而是去執行finally
塊中的內容;因此如果finally
塊中有return
語句,則會在finally
中返回;如果沒有,則返回try
塊執行return
語句。因此在finally
中使用return
語句,會導致一些奇怪的bug try
塊中定義的變量 不可以在catch
或者finally
中使用,局部變量的生命週期爲{}
之間JAVA 7
提供了catch
多個異常的方法,如catch (NullPointerException | IndexOutOfBoundException ie){}
,在這種情況下,異常變量是隱式使用了final
,是不可變的JAVA 7
提供了自動關閉資源的try
語句,但需要資源類實現Closeable
接口,用法try( PrintStream ps = new PrintStream(new FileOutputStream("a.txt")); BufferReader br = new BufferReader(new fileReader("hhh.java")); ){ // 在這裏使用資源 System.out.println(br.readLine()); }
checked
與unchecked
異常checked
異常在編譯前就需要被處理,即需要用try...catch
塊包圍或者throw
出去讓調用者處理;unchecked
異常可以不處理。- 不推薦使用
checked
異常,因爲會使得調用者與接口存在 異常耦合