在工程現場,例外處理(Exception Handling)是「可維運性」的一部分。你要先決定:這個錯誤是可預期的輸入/流程問題,還是不可預期的系統問題。兩者的處理策略完全不同。
工程規範 01:能用驗證就先驗證(不要用 try-catch 當流程控制)
- 可預期錯誤(例如:使用者輸入格式錯誤)→ 用 if/tryparse/validation 回應。
- 不可預期錯誤(例如:IO、網路、第三方服務、未知狀態)→ 用 try-catch 包住邊界。
// ✅ 可預期:輸入錯誤,先驗證
if (!int.TryParse(input, out var age))
{
return "請輸入數字";
}
// ✅ 不可預期:外部資源(IO/HTTP/DB),用 try-catch 守邊界
try
{
var text = File.ReadAllText(path);
}
catch (IOException ex)
{
// 記錄 + 回報訊息(對使用者要友善)
}