今天在寫WCF的服務的時候,發現以下的程式碼就算出現丟了Exception也不會去寫Log:
public Task<bool> CheckAuthAsync(string id, int appId)
{
try
{
return Body.CheckAuthAsync(id, appId);
}
catch (Exception ex)
{
Logger.Log(ExceptionLog.Create(ex));
throw;
}
}
想說只要在try
底下的程式碼出現的錯誤應該都可以正確抓到,然後寫例外的訊息到Log裡…
但是詢問公司同事之後才知道,
Task
裡的Exception
如果不await
的話是抓不到的阿!!
Task
裡的Exception
如果不await
的話是抓不到的阿!!
Task
裡的Exception
如果不await
的話是抓不到的阿!!
改成下面這樣就可以順利Log了!
public async Task<bool> CheckAuthAsync(string id, int appId)
{
try
{
return await Body.CheckAuthAsync(id, appId);
}
catch (Exception ex)
{
Logger.Log(ExceptionLog.Create(ex));
throw;
}
}
下次決不會踩同樣的坑了…..