Java學習總結:19

throws關鍵字

throws關鍵字主要在方法定義上使用,表示此方法中不進行異常的處理,而是交給被調用處處理。

例:使用throws

package com.study.Demo;

class MyMath{
    public static int div(int x,int y)throws Exception{	//此方法不處理異常
        return x/y;
    }
}
public class Test4 {
    public static void main(String args[]){
        try{	//div()方法拋出異常,必須明確進行異常處理
            System.out.println(MyMath.div(10,5));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
//結果
//2

提示:主方法上也可以使用throws拋出。

例:在主方法上使用throws

package com.study.Demo;

class MyMath{
    public static int div(int x,int y)throws Exception{	//此方法不處理異常
        return x/y;
    }
}
public class Test4 {
    public static void main(String args[]) throws Exception{
    //表示此異常產生後會直接通過主方法拋出,代碼中可以不強制使用異常處理
        System.out.println(MyMath.div(10,0));
    }
}
//結果
//Exception in thread "main" java.lang.ArithmeticException: / by zero
//	at com.study.Demo.MyMath.div(Test4.java:5)
//	at com.study.Demo.Test4.main(Test4.java:10)

throw關鍵字

throw關鍵字可以由用戶手工拋出一個實例化對象。

例:手工拋出異常

package com.study.Demo;

public class Test4 {
    public static void main(String args[]){
        try{
            throw new Exception("自己定義的異常");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
//結果
//java.lang.Exception: 自己定義的異常
//	at com.study.Demo.Test4.main(Test4.java:11)

異常處理的標準格式

例:

package com.study.Demo;

class MyMath{
    public static int div(int x,int y)throws Exception{	//出現異常要交給被調用處輸出
        System.out.println("計算開始");
        int result=0;
        try{
            result=x/y;
        }catch (Exception e){
            throw e;	//向上拋
        }finally {
            System.out.println("計算結束");
        }
        return result;
    }
}
public class Test3 {
    public static void main(String args[]){
        try {
            System.out.println(MyMath.div(10,0));	//被調用處處理異常
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

RuntimeException類

RuntimeException類的特徵:
程序在編譯時不會強制性地要求用戶處理異常,用戶可以根據自己的需要有選擇地進行處理,但是如果沒有處理又發生了異常,將交由JVM默認處理。

例:

package com.study.Demo;

public class Test4 {
    public static void main(String args[]){
        int temp=Integer.parseInt("100");
        System.out.println(temp);
    }
}
//結果
//100

此代碼正常運行,但如出現異常,就交由JVM進行默認處理。

assert關鍵字

assert關鍵字的主要功能是進行斷言。斷言指的是程序執行到某行之後,其結果一定是預期的結果。
例:觀察斷言的使用

package com.study.Demo;

public class Test5 {
    public static void main(String args[]){
        int num=10;
        //假設中間可能經過了20行代碼來操作num的內容,期望的內容應該是20
        assert num==20:"num的內容不是20";	//進行斷言操作
        System.out.println("num="+num);
    }
}
//結果
//num=10

結果沒有出現異常,這是因爲Java默認情況下是不開啓斷言的。如果想要啓用斷言,需要以下這樣做:

1.打開相應的控制面板
在這裏插入圖片描述
2.輸入-ea
在這裏插入圖片描述

自定義異常

用戶自己開發的異常類。
如果要想實現自定義異常類,只需要繼承Exception或RuntimeException父類即可。
例:定義AddException

package com.study.Demo;

class AddException extends Exception{	//此異常類要強制處理
    public AddException(String msg){
        super(msg);	//調用父類構造
    }
}
public class Test5 {
    public static void main(String args[]){
        int num=20;
        try{
            if(num>10){	//出現了錯誤,應該產生異常
                throw new AddException("數值傳遞的過大");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
//結果
//com.study.Demo.AddException: 數值傳遞的過大
//	at com.study.Demo.Test5.main(Test5.java:13)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章