Java工程師知識(shí)樹(shù) / Java基礎(chǔ)
1. 為什么使用自定義異常
在代碼中使用自定義的異常類,可以對(duì)異常進(jìn)行統(tǒng)一的封裝處理。
自定義異辰创玻可以使得整個(gè)項(xiàng)目的異常處理更規(guī)范需五、更統(tǒng)一薪铜、更優(yōu)雅漆弄。同時(shí)脚草,使得日志的記錄上更加清晰,便于后續(xù)查日志定位問(wèn)題披坏。
當(dāng)然自定義異常也有缺點(diǎn):發(fā)現(xiàn)異常态坦、拋出異常以及處理異常的工作必須靠編程人員在代碼中利用異常處理機(jī)制完成。這樣就相應(yīng)的增加了一些開(kāi)發(fā)成本和工作量棒拂,所以項(xiàng)目沒(méi)必要的話伞梯,也不一定非得要用上自定義異常,需要自己去權(quán)衡帚屉。
2. 自定義異常類的格式:
格式:
public class xxxException extends Exception | RuntimeException {
添加一個(gè)空參數(shù)的構(gòu)造方法
添加一個(gè)帶異常信息的構(gòu)造方法
}
3. 所有異常都必須是 Throwable 的子類
自定義異常類必須要繼承Exception|RuntimeException才有意義谜诫。
繼承Exception : 那么自定義的異常類是一個(gè)檢查異常,如果方法內(nèi)部出現(xiàn)了檢查異常攻旦,那么必須處理這個(gè)異常喻旷,要么try..catch,要么throws
繼承RuntimeException :那么自定義的異常類是一個(gè)運(yùn)行時(shí)異常牢屋,無(wú)需處理且预,交給虛擬機(jī)處理
4. 實(shí)例
通過(guò)繼承 Exception 來(lái)實(shí)現(xiàn)自定義異常:
class WrongInputException extends Exception { // 自定義的類
WrongInputException(String s) {
super(s);
}
}
class Input {
void method() throws WrongInputException {
throw new WrongInputException("Wrong input"); // 拋出自定義的類
}
}
class TestInput {
public static void main(String[] args){
try {
new Input().method();
} catch (WrongInputException wie) {
System.out.println(wie.getMessage());
}
}
}
以上代碼運(yùn)行輸出結(jié)果為:
Wrong input