我們有庫的代碼看起來是這樣的:異常記錄
public class PieRepository
{
public void AddCherryPie(string incredientA)
{
try{
...
}
catch(Exception ex){
log("Error in AddCherryPie(" + incredientA + ")");
throw new Exception("Error in AddCherryPie(" + incredientA + ")", ex);
}
}
public void AddApplePie(string incredientA, string incredientB)
{
try{
...
}
catch(Exception ex){
log("Error in AddApplePie(" + incredientA + "," + incerdientB + ")");
throw new Exception("Error in AddApplePie(" + incredientA + "," + incredientB ")", ex);
}
}
}
所以這try -> catch -> log -> throw new
是存在於大多數的存儲庫的方法和項目等重要方法。
我們今天有一個爭論,因爲我從來沒有見過有人提出這樣的錯誤處理類型,但主要論點是我們和支持人員需要確切地知道發生了什麼,以及任何其他類型的異常處理不會發生, t給我們這個... 有人可以告訴我這是好嗎?
編輯:拋出錯誤時添加原始異常消息。
代碼捕獲異常,然後不使用它,而是拋出一個新的異常,它將不包含任何有用的調試信息。 「我們需要確切地知道發生了什麼」的論點是沒有道理的,因爲沒有StackTrace等,你無法確切地知道發生了什麼。您至少應該在某處記錄異常,然後向用戶提供有用的消息。 – Equalsk
對於日誌方面,您可以嘗試NLog或其他第三方解決方案(我對NLog非常滿意) – Tuco