天天看點

java異常 — — 自定義異常三、自定義異常

三、自定義異常

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:那麼自定義的異常類就是一個運作期異常,無需處 理交給虛拟機處理(中斷處理)。

③ 添加一個帶異常資訊的構造方法

檢視源碼發現,所有的異常類都會有一個帶異常資訊的構造方法。方法内部會調用父類帶異常資訊的構造方法,讓父類來處理這個異常資訊

java異常 — — 自定義異常三、自定義異常

3.3、自定義異常的練習

要求:

模拟注冊操作,如果使用者名已存在,則抛出異常并提示:親,該使用者名已經被注冊。

首先定義一個登陸異常類RegisterException :

分析:

① 使用數組儲存已經注冊過的使用者名(資料庫)。

② 使用Scanner擷取使用者輸入的注冊的使用者名(前端,頁面)。

③ 定義一個方法。對使用者輸入的中注冊的使用者名進行判斷。

周遊存儲已經注冊過使用者名的數組。擷取每一個使用者名

使用擷取到的使用者名和使用者輸入的使用者名比較

true:

使用者名已經存在,抛出RegisterException異常,告知使用者“該使用者名已經被注冊”

false:

繼續周遊比較。

如果循環結束了,還沒有找到重複的使用者名,提示使用者“恭喜您,注冊成功!”;

代碼:

java異常 — — 自定義異常三、自定義異常