異常處理的方式

處理異常的方式:
對于編譯期異常處理有兩種不同的處理方式。
(1) 使用try{ } catch { } finally 語句塊處理它。
(2)在函數(shù)簽名中使用throws 聲明交給函數(shù)調(diào)用者去解決吞歼。

try catch finally 塊是異常的捕獲,其本質(zhì)是判斷狈癞,基本語法如下:

try{
    可能出現(xiàn)異常的代碼(包括不會出現(xiàn)異常的代碼)
   } catch( Exception e) { // 括號里面接收try代碼塊中出現(xiàn)的異常類型
    如果出現(xiàn)異常時的處理代碼
   
   }finally {
    不管代碼是正常執(zhí)行還是出現(xiàn)異常需要處理夯到,finally代碼塊中的代碼最終都會執(zhí)行
}

自定義異常
格式:
(1)自定義一個編譯器異常:自定義類并繼承java.lang.Exception。
(2)自定義一個運行時期的異常類:自定義類售葡,并繼承于java.lang.RuntimeException看杭。

public class 自定義異常類 extends java.langException{
}

使用時需要輸出異常信息,這需要調(diào)用父類的構(gòu)造方法挟伙。

public class PersonException extends Exception{
    private static final long serialVersionUID = 1L;
    
    public PersonException(){
        super();
    }
    
    
    public PersonException(String message){
        super(message);
    }
}

使用自定義異常:

public void savePerson(Person person) throws PesonException {
   
   if( null = = person.getPId()(){
      throw new PersonException("沒有Person編號楼雹,請檢查");
   }
}

注意:

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

(2) 自定義異常類尖阔,必須繼承Exception或者RuntimeException贮缅。

1)繼承Exception,那么自定義的異常類就是一個編譯期異常介却,如果方法內(nèi)部拋出了編譯期異常谴供,就必須處理這個異常,要么throws齿坷,要么try...catch桂肌。

2)繼承RuntimeException,那么自定義的異常類就是一個運行期異常胃夏,無法處理轴或,交給虛擬機處理(中斷處理)。

Dome01:

public class Dome01 {
    public static void main(String[] args) {
        int divisor  = 10 ;
        int dividend = 0 ;
        // System.out.println(divisor/dividend);  // ArithmeticException  算術(shù)異常
        try {
            System.out.println(divisor / dividend);  //ArithmeticException 算術(shù)異常
        }catch (Exception e ) {
            e.printStackTrace();
            System.out.println("捕獲到一個異常");
        }finally {
            System.out.println("不管如何都會執(zhí)行這里的代碼");
        }
        System.out.println("哈哈哈哈哈哈");

    }
}

Dome02:

public class Dome02 {
    public static void main(String[] args) {
        int[] a = new int[2];
        Scanner scanner = new Scanner(System.in);
        try {
            int i = scanner.nextInt();
            int j = scanner.nextInt();
            a[0] =i;
            a[2] = j;
            System.out.println( a[0] / a[2]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("數(shù)據(jù)越界異常");
        } catch (NumberFormatException e) {
            System.out.println("數(shù)據(jù)格式不正確異常");
        } catch (ArithmeticException e) {
            System.out.println("算數(shù)異常");
        }
    }
}

Dome03:

public class Dome03 {
    public static void main(String[] args) {
        int[] a = new int[2];
        Scanner scanner = new Scanner(System.in);
        try {
            int i = scanner.nextInt();
            int j = scanner.nextInt();
            a[0] = i;
            a[2] = j;
            System.out.println( a[0] / a[2]);
            // Array Index OutOf Bounds Exception  數(shù)組 索引 超出 邊界 異常
            // Input Mismatch Exception  輸入 不匹配 異常
            // Arithmetic Exception  數(shù)學(xué)數(shù)字 異常
        } catch (ArrayIndexOutOfBoundsException | InputMismatchException | ArithmeticException e) {
            System.out.println("數(shù)據(jù)越界異常");
            System.out.println("數(shù)據(jù)格式不正確異常");
            System.out.println("算數(shù)異常");
            System.out.println("以上異常中的一個");
        }

    }
}

Dome04:

public class Dome04 {
    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("處理不了的異常照雁,扔出去");  //拋出異常
        }
    }
}

Dome05

public class Dome05 {
    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)一個不對勁的");  //拋出異常
        }
    }
}

SexException:

public class SexException extends Exception {
    public SexException(){
    }
    public SexException(String message){
        System.out.println(message);
        System.out.println("自定義的異常,知道非男非女答恶,但是沒辦法處理");
        System.out.println("..........");
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載饺蚊,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末悬嗓,一起剝皮案震驚了整個濱河市污呼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌包竹,老刑警劉巖燕酷,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件籍凝,死亡現(xiàn)場離奇詭異,居然都是意外死亡苗缩,警方通過查閱死者的電腦和手機饵蒂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酱讶,“玉大人退盯,你說我怎么就攤上這事⌒嚎希” “怎么了渊迁?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灶挟。 經(jīng)常有香客問我琉朽,道長,這世上最難降的妖魔是什么膏萧? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任漓骚,我火速辦了婚禮,結(jié)果婚禮上榛泛,老公的妹妹穿的比我還像新娘蝌蹂。我一直安慰自己,他們只是感情好曹锨,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布孤个。 她就那樣靜靜地躺著,像睡著了一般沛简。 火紅的嫁衣襯著肌膚如雪齐鲤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天椒楣,我揣著相機與錄音给郊,去河邊找鬼。 笑死捧灰,一個胖子當(dāng)著我的面吹牛淆九,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毛俏,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼炭庙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了煌寇?” 一聲冷哼從身側(cè)響起焕蹄,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阀溶,沒想到半個月后腻脏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸦泳,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年迹卢,在試婚紗的時候發(fā)現(xiàn)自己被綠了辽故。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡腐碱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掉弛,到底是詐尸還是另有隱情症见,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布殃饿,位于F島的核電站谋作,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乎芳。R本人自食惡果不足惜遵蚜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奈惑。 院中可真熱鬧吭净,春花似錦、人聲如沸肴甸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽原在。三九已至友扰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庶柿,已是汗流浹背村怪。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浮庐,地道東北人甚负。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像兔辅,于是被迫代替她去往敵國和親腊敲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容