2021-04-27筆記異常處理

try cath finally 塊

  try{
            System.out.println(divisor / dividend);//ArithmeticException    算數(shù)異常
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("捕獲到一個異常");
        }finally {
            System.out.println("不管怎
                    樣都會執(zhí)行這個代碼");
        }

1:如果try塊所有語言正常執(zhí)行完畢,不會發(fā)生異常,南無catch所有語句將被忽略

2:如果try塊執(zhí)行中遇到異常且這個異常與catch異常類型匹配,那么try其余代碼將被忽略catch塊會被執(zhí)行

3:如果try語句在執(zhí)行中遇到異常,而拋出異常沒有在catch中聲明,程序會立刻退出

拋出異常throws和throw

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/27 15:31
 */
public class Demo03 {
    public static void main(String[] args) throws Exception{       //繼續(xù)向上聲明,不處理
        /*try {
            steSex("雙性人");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("非男非女");
        }*/
        steSex("afwarf");
    }
    public static void steSex(String sex) throws Exception{  //聲明異常
        if (!(sex.equals("男")|| sex.equals("女"))){
           throw new Exception("處理不了的異常,扔出去");  //拋出異常
        }
    }
}

throw和throws區(qū)別

1作用不同:throw用于在程序中拋出異常;throw用于聲明在該方法內(nèi)拋出異常

2使用位置不同:throw位于方法內(nèi)部可以做反復(fù)語句使用;throws必須跟在方法參數(shù)后面,不能單獨使用

3內(nèi)容不同:throw拋出一個異常對象,而且只能是一個,throws后面跟異常類,而且可以跟多個異常類

自定義異常

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/27 15:46
 */
public class Demo04 {
    public static void main(String[] args){
        try {
            steSex("雙性人");
        }catch (Exception e){
            System.out.println("調(diào)用者說處理過了");
        }
    }
    public static void steSex(String sex) throws SexException{  //聲明異常
        if (!(sex.equals("男")|| sex.equals("女"))){
            throw new SexException("發(fā)現(xiàn)一個不對勁的");  //拋出異常
        }
    }
}

package edu.xcdq;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/27 15:44
 */
public class SexException extends Exception {
    public SexException(){
    }
    public SexException(String message){
        System.out.println(message);
        System.out.println("自定義的異常,知道非男飛女,但是沒辦法處理");
        System.out.println("..........");
    }
}

注意

1:自定義異常類一般是以Exception結(jié)尾

2:自定義異常類,必須繼承Exception或RuntimeException

    2.1:繼承Exception,那么自定義的異常類就是一個編譯期異常,如果方法內(nèi)部拋出了編譯期異常,就不許處理這個異常,要么throws,要么try···caych

    2.2:繼承RuntimeException,那么自定義的異常類就是一個運行期異常,無需處理,交給虛擬機處理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容