讓我們說我們有一個外部服務器,我們使用(例如 - 電話站等)。另外,我們有下一個代碼:可能引起內部攻擊的調用方法
try
{
externalService.CreateCall(callParams);
}
catch (Exception ex)
{
_log.Error("Unexpected exception when trying execute an external code.", ex);
_callService.UpdateCallState(call, CallState.Disconnected, CallOutcome.Failed);
throw;
}
理論上UpdateCallState
可以拋出,但我們將隱藏使用此代碼例外,像對待只有在正確的方式通過CreateCall
產生的異常。
問題是,這些情況的正確模式是什麼,以便我們正確處理所有異常?
分開稱呼它。不要嵌套可能的可惡的異常調用。它可能會讓你的代碼變得複雜,並且你將無法正常恢復任何狀態。 – Zenwalker 2012-04-02 08:44:34
在這種情況下,如果因任何原因造成呼叫失敗,您必須掛斷電話。你必須打電話給它。 – 2012-04-02 08:45:39
你是什麼意思掛斷電話?如果A調用引發異常,則創建一個失敗標誌,然後調用B,這可能會再次拋出異常。如果一個電話沒有,那麼不要撥打B cuz標誌沒有設置。嵌套異常將會產生問題。 – Zenwalker 2012-04-02 08:47:22