三、自定義異常
3.1、概述
為什麼需要自定義異常類:
Java中不同的異常類分别表示看某一種具體的異常情況,那麼在開發中總是有些異常情況是SUN沒有定義好的此時我們根據自己業務的異常情況來定義異常類。例如年齡負數問題,考試成績負數問題等等。
在上述代碼中,發現這些異常都是JDK内部定義好的,但是實際開發中也會出現很多異常,,這些異常很可能在IDK中沒有定義過,例如年齡負數問題,考試成績負數問題
什麼是自定義異常類:
在開發中根據自己業務的異常情況來定義異常類。
自定義一個業務邏輯異常:RegisterException,一個注冊異常類。
3.2、定義異常類
① 自定義一個編譯期異常:自定義類并繼承于java.lang.Exception。
② 自定義一個運作時期的異常類:自定義類并繼承于java.lang.RuntimeException。
格式:
public class XxExcepiton extends Exception | RuntimeException {
// 添加一個空參數的構造方法
//添加一個帶異常資訊的構造方法
}
注意事項:
① 自定義異常類一般都是以Exception結尾,說明該類是一個異常類。
② 自定義異常類,必須的繼承Exception或者RuntimeException。
繼承Exception:那麼自定義的異常類就是一個編譯期異常,如果方法内部發出了編譯期異常,就必須處理這個異常要麼throws,要麼try…catch。
繼承RuntimeException:那麼自定義的異常類就是一個運作期異常,無需處 理交給虛拟機處理(中斷處理)。
③ 添加一個帶異常資訊的構造方法
檢視源碼發現,所有的異常類都會有一個帶異常資訊的構造方法。方法内部會調用父類帶異常資訊的構造方法,讓父類來處理這個異常資訊

3.3、自定義異常的練習
要求:
模拟注冊操作,如果使用者名已存在,則抛出異常并提示:親,該使用者名已經被注冊。
首先定義一個登陸異常類RegisterException :
分析:
① 使用數組儲存已經注冊過的使用者名(資料庫)。
② 使用Scanner擷取使用者輸入的注冊的使用者名(前端,頁面)。
③ 定義一個方法。對使用者輸入的中注冊的使用者名進行判斷。
周遊存儲已經注冊過使用者名的數組。擷取每一個使用者名
使用擷取到的使用者名和使用者輸入的使用者名比較
true:
使用者名已經存在,抛出RegisterException異常,告知使用者“該使用者名已經被注冊”
false:
繼續周遊比較。
如果循環結束了,還沒有找到重複的使用者名,提示使用者“恭喜您,注冊成功!”;
代碼: