在我們實際開發過程中,一個程序總是調用了很多的方法來實現各種業務需求,我們無法預料到會不會有什麼莫名其妙的原因導致某個方法出現異常,同時又覺得這一次異常不應該導致整個程序無法繼續運行下去,那麼我們會使用try-catch代碼塊。
如果你是個經驗老道的開發者,那麼你肯定寫過或者是見過只在try裏面編寫代碼,卻不在catch裏做任何處理的try-catch塊。
像是這樣:
try
{
SyncNewMessage(oprNo, model);
}
catch (Exception e) { }
這麼寫的目的是爲了保證程序繼續運行,但是開發者評估這個SyncNewMessage方法無關緊要,或是出現異常的可能性非常低,所以懶得處理或拋出異常,這就是所謂的當異常發生時,就直接將異常吃到肚子裏去。
但是事無絕對,哪怕是一個只執行了簡單Insert語句的方法,也可能某一天數據自增列Id達到最大值(20多億)溢出了,如果你們的項目裏沒有完善的異常處理方案與警報,那麼你很難知曉這個方法已經無法正常執行了。
所以哪怕你只是記錄個日誌,也比什麼都不做要保險的多。當然你還可以選擇更詳細的拋出異常
try
{
SyncNewMessage(oprNo,model);
}
catch(Exception e)
{
AddNewExceptionLog($"異常信息:{JsonConvert.SerializeObject(e)}") //自定義的記錄日誌方法
}
catch (IOException e)
{
///IO異常,通知當前用戶
}
catch (UnauthorizedAccessException e)
{
////權限異常,通知客戶端管理員
}
catch (CommunicationException e)
{
///網絡異常,通知發送給網絡管理員
}