2
我在異步環境(Silverlight)中工作,並使用Logger服務來存儲服務器端的異常。在catch塊中調用異步方法
考慮以下代碼:
catch (Exception ex)
{
this.loggerService.LogAsync(ex, "NotesService");
}
記錄器看起來是這樣的:
public interface ILoggerService
{
Task LogAsync(Exception ex, string tag);
}
如果我寫的代碼如上(連追在異步方法),我不能把等待在那裏。 如果我離開它,我會得到警告,繼續執行,等等,等等。這很好,我不在乎。我只需要記錄錯誤。
我可以只是抑制這個警告,或者我應該想出更好的模式嗎?
你想要做的,如果什麼'LogAsync'徹底失敗?您可能希望有一個觀察故障任務的備份計劃。 – 2013-03-12 22:21:31
@JonSkeet我以這種方式代碼LogAsync,我「吃」異常 - 這是最後的手段。 – katit 2013-03-12 22:26:01
@katit:在這種情況下,您可能想*考慮*將返回類型更改爲'void'。這非常*非常不是一個好主意,但是如果你真的*希望它完全「消失並忘記」,它就會起作用。 – 2013-03-12 22:28:50