2020.7.27
一、今日學習內容
1、在java中如何進行異常處理:java異常處理的方法一般有兩種,分別是使用try…catch…finally…和throws來操作。
(1)Try…catch…finally…
通過使用Try…catch…finally….語句處理異常,它捕獲被命名為屬於異常類的異常,並呼叫方法處理它。其中,finally無論有無異常都會執行。
Try...catch異常處理程式碼塊的基本形式如下:
try //監視 { 可能發生異常的程式碼塊; }catch (異常型別 異常物件名) / /捕獲並處理異常 { 異常處理程式碼塊; } finally{ / /最終執行 }
示例:使用Try…catch…finally…
public class TryCatchFinally{ public static void main (String[] args) { try{ int x=5;int y=x/0; System. out.println(y) ; }catch (Exception e) { e.printstackTrace() ; //將錯誤列印到堆疊 } finally{ System. out.println("Over!") ; } } }
整數是不可以除以0的,因為這句程式碼會出現異常,所以用try…catch…finally…捕獲它
結果:
示例:
public class TryReturn { public static void main (String[] args) { TryReturn t=new TryReturn() ; int x =t.get(); System. out.printin("x="+x); } public int get() { int x=0; try{ x=5; return x; } catch (Exception e) ( e.printStackTrace() ; }finally{ x=10; return x; } } }
輸出結果:x=10
如果將finally去掉,輸出結果是x=5;從該結果可以看出,貌似finally沒有執行一樣,其實finally的語句是執行的,只不過方法是return 一個值,只不過是從try語句中返回的。其中finally可以省略。
catch語句可以有多個,並且如果使用者要捕獲Exception,則將Exception放在最後,不能放在前面,否則會出錯,可以簡單理解為,如果要捕獲多個異常,異常的範圍要按照從小到大順序疊放。
示例:catch多個異常
public class TryCatchFinally { pub1ic static void main(String[] args) { try{ int x=5; int y= x/0; System. out.println(y) ; } catch (IllegalArgumentException e) { e. printStackTrace (); //將錯誤列印到堆疊 }catch (Exception e) { //Exception的範圍比較大,應該放在後面 e. printstackTrace(); * } } }
總結:當丟擲一個異常時,異常會由相應的catch語句捕獲並處理。與一個try相關的catch語句可以有多個,構成多重catch語句,異常型別決定了要執行哪個catch語句。如果沒有丟擲異常,那麼,try程式碼塊就會結束,並且會跳過它的所有catch語句,從最後一個catch後面的第一個語句繼續執行。其實try語句也可以嵌入try語句,一個try程式碼塊可以嵌入到另一個try程式碼塊中。由於內部try程式碼塊產生的異常如果沒有被與該內部try程式碼塊相關的catch捕獲,就會傳到外部try程式碼塊。