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