3
如果我們捕獲異常,然後拋出異常,但不是相同類型(僅基於第一個),它是否仍然是反模式以記錄第一個?日誌異常並拋出新的異常 - 它是否爲反模式?
簡單的例子:
} catch (CloneNotSupportedException e) {
log.warn(e, e.getMessage());
throw new InternalError(e.getMessage());
}
我認爲這是一個意見問題。有些人將整個clone()接口視爲從Java 1.0繼承的不良模式。我會試圖有一個不同的界面,包裝這個例如。 '可複製的' –
有很多情況下,你想捕捉異常,記錄它,並拋出一個不同的。你所捕獲的異常是你所調用的代碼暴露的內容。你拋出的異常是你想讓任何人打電話給你的代碼的東西。 (這通常是我正在談論的,而不是你必須通過使用'Cloneable'的廢話。) – khelwood
我不會稱之爲反模式。我不會記錄它,因爲原來的異常被包裝在一個新的異常中,所以沒有信息丟失。調用者現在可以確定是否以及如何記錄它。 – f1sh