自定義異常
3.1 概述
為什麼需要自定義異常類:
我們說了Java中不同的異常類,分别表示着某一種具體的異常情況,那麼在開發中總是有些異常情況是SUN沒有定義好的,此時我們根據自己業務的異常情況來定義異常類。例如年齡負數問題,考試成績負數問題等等。
在上述代碼中,發現這些異常都是JDK内部定義好的,但是實際開發中也會出現很多異常,這些異常很可能在JDK中沒有定義過,例如年齡負數問題,考試成績負數問題.那麼能不能自己定義異常呢?
什麼是自定義異常類:
在開發中根據自己業務的異常情況來定義異常類.
自定義一個業務邏輯異常: RegisterException。一個注冊異常類。
異常類如何定義:
- 自定義一個編譯期異常: 自定義類 并繼承于
。java.lang.Exception
- 自定義一個運作時期的異常類:自定義類 并繼承于
java.lang.RuntimeException
3.2 自定義異常的練習
// 業務邏輯異常
public class RegisterException extends Exception {
/**
* 空參構造
*/
public RegisterException() {
}
/**
*
* @param message 表示異常提示
*/
public RegisterException(String message) {
super(message);
}
}
public class Demo {
// 模拟資料庫中已存在賬号
private static String[] names = {"bill","hill","jill"};
public static void main(String[] args) {
//調用方法
try{
// 可能出現異常的代碼
checkUsername("nill");
System.out.println("注冊成功");//如果沒有異常就是注冊成功
}catch(RegisterException e){
//處理異常
e.printStackTrace();
}
}
//判斷目前新增賬號是否存在
//因為是編譯期異常,又想調用者去處理 是以聲明該異常
public static boolean checkUsername(String uname) throws LoginException{
for (String name : names) {
if(name.equals(uname)){//如果名字在這裡面 就抛出登陸異常
throw new RegisterException("親"+name+"已經被注冊了!");
}
}
return true;
}
}