欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java異常處理try?catch的基本使用

 更新時(shí)間:2022年02月11日 11:07:23   作者:寫B(tài)ug的渣渣高  
大家好,本篇文章主要講的是Java異常處理try?catch的基本使用,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下

1. 異常

1.1 try…catch異常處理

try catch的異常處理的格式寫法 :

try{
    被檢測(cè)的代碼
    可能發(fā)生異常的代碼
}catch(異常類的類名  變量名){
    異常的處理方式 : 寫什么都可以
    定義變量,創(chuàng)建對(duì)象,調(diào)用方法,循環(huán),判斷...
    只要寫了catch,異常就被處理掉了
}
public static void main(String[] args) {
        int[] arr = {1};
        //try  catch異常處理
        try {
            int i = getNum(arr);
            System.out.println("i = " + i);
        }catch (Exception ex){
            System.out.println("異常被處理掉");
        }
        System.out.println(111);
    }

    public static int getNum(int[] arr){
        return arr[1] + 10;
    }

1.2 多catch并行處理

異常處理的代碼中 : try 可以跟隨多個(gè)catch

好處 : 不同的異常,可以區(qū)別對(duì)待,分開處理

public static void main(String[] args) {
    /**
    *   myExec出現(xiàn)2個(gè)異常
    *   寫2個(gè)catch分別捕獲異常
    */
    try {
        	myExec(0);
        }catch (NullPointerException ex){
        	System.out.println("處理空指針異常");
        }catch (ArrayIndexOutOfBoundsException ex){
        	System.out.println("處理越界異常");
        }
    }

    /**
    * 定義方法,目的引發(fā)異常
    * 傳遞參數(shù) : 對(duì)參數(shù)進(jìn)行判斷
    */
    public static void  myExec(int i){
    if ( i == 0){
        //引發(fā)空指針異常
        String s = null;
        int len = s.length();
    }else {
        //引發(fā)越界異常
        int[] arr = {};
        int a = arr[0];
    }
}

多個(gè)catch處理異常的時(shí)候,寫法特別注意 : 如果catch中的異常類沒有關(guān)系,先寫后寫沒有區(qū)別, catch中的異常類有繼承關(guān)系,父類寫在最下面

1.3 throw和throws 關(guān)鍵字的使用

throw關(guān)鍵字 : 只能寫在方法內(nèi)部, 關(guān)鍵字的后面跟隨對(duì)象的創(chuàng)建

throws關(guān)鍵字 : 只能寫在方法的定義上,關(guān)鍵字后面跟隨異常類名

public static void main(String[] args) {
       /**
         *   getArea()調(diào)用方法,方法上有異常
         *   只能處理,不處理編譯失敗
         *   在main的方法上加throws 異常沒有處理,交給JVM處理
         *   try catch處理
         */
    try {
        int area = getArea(-10);
        System.out.println(area);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
     * 功能: 計(jì)算正方形的面積
     * 需要參數(shù) : 邊長(zhǎng)
     * 語(yǔ)法 : 方法的內(nèi)部出現(xiàn)了異常,必須在方法定義上暴露
     */
public static int getArea(int length) throws  Exception{
    if (length <= 0)
        //數(shù)據(jù)錯(cuò)誤,導(dǎo)致后面的計(jì)算不能進(jìn)行
        //內(nèi)部出現(xiàn)問題
        throw new Exception("邊長(zhǎng)不存在");
    return length * length;
}

1.4 finally代碼塊

finally代碼塊跟隨try … catch使用,也有跟隨try使用

finally代碼塊里面的程序,無(wú)論是否出現(xiàn)異常,都會(huì)執(zhí)行,必須執(zhí)行

結(jié)束JVM了,finally不執(zhí)行.

主要用于釋放資源

public static void main(String[] args) {
    try {
        int[] arr = {1};
        System.out.println(arr[0]);
    }catch (Exception ex){
        ex.printStackTrace();
    }finally {
        //后期用于資源的釋放
        System.out.println("這里的代碼,必須執(zhí)行");
    }
}

1.5 RuntimeException異常

異常的父類是Exception,Exception類的子類RuntimeException,凡是RuntimeException和他的所有子類,都稱為運(yùn)行異常,非子類的稱為編譯異常

編譯異常 : 方法出現(xiàn)編譯異常,調(diào)用者必須處理,否則編譯失敗.處理方式可以是try catch或者是throws都可以

運(yùn)行異常 : 方法出現(xiàn)運(yùn)行異常,方法的定義上,不需要throws聲明,調(diào)用者也不需要處理這個(gè)異常

不要處理運(yùn)行異常 : 程序一旦發(fā)生運(yùn)行異常,請(qǐng)程序人員修改源碼

常見的運(yùn)行異常

NullPointerException 空指針

IndexOutOfBoundsException 越界異常

ClassCastException 類型強(qiáng)制

IllegalArgumentException 無(wú)效的參數(shù)異常

1.6 自定義異常

Java官方已經(jīng)定義了大量的異常類,但是依然不夠,以后做項(xiàng)目的時(shí)候,會(huì)出現(xiàn)的異常,在JDK中沒有定義的,需要我們自己定義異常

自定義異常,入伙,繼承Exception或者RuntimeException 只有Exception和他的子類,才具有可拋出性

自定義的類中,構(gòu)造方法,super調(diào)用父類構(gòu)造方法,傳遞異常信息

/**
 *  自定義的異常類
 *    成績(jī)負(fù)數(shù)的異常
 *    繼承哪個(gè)父類呢
 *
 *    自定義異常信息 : 繼承父類 RuntimeException 帶有String類型的構(gòu)造方法 (String 異常信息)
 */
public class ScoreException extends RuntimeException{
    public ScoreException(String s){
        super(s);
    }
}
    public static void main(String[] args) {
       // int[] arr = {1};
        //System.out.println(arr[2]);
        int avg = getAvg(-100,2);
        System.out.println("avg = " + avg);
    }

    /**
     * 計(jì)算成績(jī)的平均分
     */
    public static int getAvg(int math,int chinese){
        //判斷成績(jī)的數(shù)值
        if ( math < 0 || chinese < 0)
            //手動(dòng)拋出,自己定義的異常
            throw new ScoreException("成績(jī)不存在");

        return  (math + chinese) / 2;
    }

總結(jié)

到此這篇關(guān)于Java異常處理try catch的基本使用的文章就介紹到這了,更多相關(guān)Java異常處理try catch內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論