工程規範 03:不要 catch (Exception) 然後什麼都不做
- 先 catch 具體例外(FormatException / IOException / HttpRequestException)。
- 如果一定要 catch Exception,請把它放在最後,並且要 log / 轉成可控回應。
// ✅ 正確:保留 stack trace
try
{
DoWork();
}
catch
{
// 做必要處理後重新拋出
throw; // ✅ 保留原始 stack trace
}
// ❌ 錯誤:會重置 stack trace
catch (Exception ex)
{
throw ex; // ❌ 不要這樣寫
}
finally / using:資源必須被釋放
// using 會自動 Dispose
using var stream = File.OpenRead(path);
// ...
工程規範 04:例外訊息不要直接顯示給使用者
例外訊息常包含路徑、連線資訊、甚至內部實作細節。對使用者只回「可理解的建議」,診斷細節交給 log。