處理在Task裡的例外(Exception)

2019/10/30 C#

今天在寫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;
    }
}

下次決不會踩同樣的坑了…..

Search

    Table of Contents