try、catch、finally中return的執行順序及自定義異常建立
阿新 • • 發佈:2018-11-19
1.在Java中使用 try/catch語句捕獲異常
說明
throw和throws的區別?
1.作用不同:throw用於程式設計師自行產生並丟擲異常,throws用於宣告該方法內丟擲了異常。
2.使用的位置不同:throw位於方法體內部,可以作為單獨語句使用。throws必須跟在方法引數列表的後面,不能單獨使用。
3.內容不同:throw丟擲一個異常物件,並且只能是一個。throws後面跟異常類,並且可以跟多個異常類。
try、catch、finally中return的執行順序
上程式碼
package concurrent; public class Test1 { public static void main(String[] args) { try{ System.out.println("1"); int x = 5; int y = 0; if(y==0){ throw new Exception("除數不能為0!");//當執行這句語句時,直接進入catch塊 } // int result = x/y; System.out.println("2"); } catch(Exception e){ System.out.println("3"); e.printStackTrace(); System.out.println("4"); } finally{ System.out.println("5"); } System.out.println("6"); } }
注:無論哪個語句塊中有return語句,都會執行finally語句塊,而且如果finally 中語句塊中含有return語句那麼將會覆蓋try catch中的return語句
2.建立自定義異常
1).定義自定義異常,並繼承Exception或者RuntimeException
2).編寫異常類的構造方法,並繼承父類的實現,常見的構造方法有4種。
package concurrent; /** * @Author: hg * @Date: 2018/11/15 21:47 * @Version 1.0 */ public class CostomException extends Exception{ public CostomException() { super(); } public CostomException(String message) { super(message); } //用指定原因構造一個新的異常 public CostomException(Throwable cause) { super(cause); } // 用指定的詳細資訊和原因構造一個新的異常 public CostomException(String message, Throwable cause) { super(message, cause); } } class Test2{ public static void setSex(String sex) throws CostomException { if(!"男".equals(sex)||!"女".equals(sex)){ throw new CostomException("性別必須是男或女"); }else{ System.out.println("性別是:"+sex); } } public static void main(String[] args) { try { Test2.setSex("aa"); } catch (CostomException e) { e.printStackTrace(); } } }