1. 程式人生 > >try、catch、finally中return的執行順序及自定義異常建立

try、catch、finally中return的執行順序及自定義異常建立

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();
        }
    }

}