根據 e.TargetSite.Name 切換處理邏輯極其脆弱:重命名方法、移動程式碼、更深層堆疊皆會破壞。應建立專屬例外類別,讓呼叫端以 catch 區塊處理不同錯誤情境。
Exception:提供豐富資訊讓呼叫端能精準恢復。分析錯誤條件,可歸類為同一恢復行為者共用一個例外類別。例如:檔案/目錄遺失、權限不足、網路資源遺失,各自對應不同恢復機制,應建立不同例外類別。
自訂例外應繼承 System.ApplicationException 而非 Exception。需實作四個建構子並委派基類:
public class MyAssemblyException : ApplicationException
{
public MyAssemblyException() : base() { }
public MyAssemblyException(string s) : base(s) { }
public MyAssemblyException(string s, Exception e) : base(s, e) { }
protected MyAssemblyException(SerializationInfo info, StreamingContext ctx) : base(info, ctx) { }
}
不同情境呼叫不同建構子,確保例外資訊完整傳遞。