我有一個類TCPDataLink
使用Socket
實現了一些TCP功能。我也有一個IOManager
,它會在發生錯誤時執行一些日誌記錄(在我所有的DataLink
上)。從事件中捕獲異常
問題是我找不到從我的IOManager
類中找到Socket
事件處理程序異常的方法。我不想在我的TCPDataLink
類中注入Logger
依賴關係,因爲我不想在我的所有DataLink
類中重複日誌記錄代碼。
例如,在正常情況下:
// IOManager Class call in a normal case
try
{
tcpInstance.DoSomething
}
catch (MyCustomEx e)
{
// Log the problem
Logger.log(e.ToString());
}
在我的問題的情況下:
// TCPDataLink.cs
...
socket.OnConnection += ConnectionHandler // Cannot try/catch or whatever
...
void ConnectionHandler(...)
{
// Code throwing Exceptions
}
據this螺紋,外的try/catch是不是一種選擇。所以我必須在我的ConnectionHanlder
裏面抓到Exception
...?
什麼是我的IOManager記錄日誌的最佳選擇,無法趕上Exception
?
感謝,
是的,我已經處理了異常(在我的示例中未報告,我會更新我的帖子)。我的問題是在c#中「期望的異常處理」的最佳方法是什麼(換句話說,如何通知我的'ConnectionHandler'?我可以通過事件做到這一點,但由於事件繼承是一種痛苦,我希望存在其他解決方案。 –
@NicolasVoron:可以改用狀態變量。 – Tigran
您能詳細解釋一下嗎? –