3 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
大多數(shù)時(shí)候,如果我想在某個(gè)臨界點(diǎn)終止程序的執(zhí)行
大多數(shù)時(shí)候我不想終止我的應(yīng)用程序,但我想從異常中恢復(fù)以繼續(xù)執(zhí)行。
通常,您不必定義自己的異常,因?yàn)槟梢裕夹g(shù)上)僅使用例如。Exception和RuntimeException而創(chuàng)建自己的異常類allowes您精確graing這種異常醒目。例如
try{
myService.doSomething();
}catch(MyCustomException){
//handle custom exception here- eg.
retunr Constants.DEFAULT_RESPONSE;
}catch(RuntimeException e){
log.error("Unknown Error",e);
return null;
}
所以在這種情況下,我允許自己從我的服務(wù)方法拋出的異常中恢復(fù),但同時(shí)我登錄所有其他異常(返回null不是最佳實(shí)踐)

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
我強(qiáng)烈反對(duì)使用泛型RuntimeException
和Exception
. 這是為了讓我們能夠以不同的方式處理不同的異常。
例如,如果我捕獲了一個(gè)RuntimeException
,如果由于輸入錯(cuò)誤(這樣我們可以告訴用戶修復(fù)他們的輸入)、磁盤錯(cuò)誤(這樣我們可以提醒運(yùn)營(yíng)團(tuán)隊(duì)以便他們可以替換) 或空指針(這顯然是一個(gè)錯(cuò)誤)。拋出和捕獲泛型RuntimeException
使這比真正需要的更困難。

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
具有不同類型異常的一種方法是,您可以定義程序應(yīng)如何響應(yīng)拋出的特定異常。
try {
// code that may throw several types of exceptions
} catch (Exception1 e) {
// handle Exception1
} catch (Exception2 e) {
// handle Exception2
} catch ...
通過(guò)這種方式,正在運(yùn)行的程序可以從異常中恢復(fù)并繼續(xù)運(yùn)行。
添加回答
舉報(bào)