1 回答

TA貢獻1794條經(jīng)驗 獲得超8個贊
拋出異常是昂貴的操作。因此,如果您考慮兩種選擇 - 投擲和不投擲,那么不投擲是更好的方法。
然而,使用異常作為doStuffWithExceptionin的輸入?yún)?shù)try-block,感覺代碼很小。因此,我建議重構(gòu)異常處理邏輯,使其不依賴異常作為輸入?yún)?shù)。
如果您根據(jù)異常中的某些數(shù)據(jù)來處理異常情況 - 提取該數(shù)據(jù)并傳遞給handle方法?;旧希灰獙惓S米?DTO 或 POJO(因為異常不是用于此目的)。
總結(jié)一下,我建議使用類似以下片段的內(nèi)容:
try {
throwCheckedException();
if (!someBoolean) {
Data data = createData();
handle(data);
}
} catch (IOException e) {
Data data = createDataFromMessage(e.getMessage());
handle(data);
}
或者,減少內(nèi)部嵌套try-block:
try {
throwCheckedException();
} catch (IOException e) {
Data data = createDataFromMessage(e.getMessage());
handle(data);
}
if (!someBoolean) {
Data data = createData();
handle(data);
}
添加回答
舉報