拋出例外會中斷預期行為,清理工作留給捕獲者。C# 社群可直接套用 C++ 社群成熟的例外安全實踐(Tom Cargill、Herb Sutter、Scott Meyers 等人 1994-2000 年討論成果)。
IDisposable 資源才可能洩漏(參見原則 18)。強保證在恢復能力與簡單度間取得最佳平衡。
public void PhysicalMove(string title, decimal newPay)
{
// PayrollData 為 struct,建構子驗證欄位
PayrollData d = new PayrollData(title, newPay, this.payrollData.DateOfHire);
// 建構成功才交換
this.payrollData = d;
}
參考型別交換極廉價,傾向支援強保證。範例:DataSet 複本填充資料後原子交換 _data = tmp。