1 回答

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