很久以前就有聽說
async 方法不要回傳void
應該要回傳Task
直到前幾天才踩到這個坑

起因是前幾天開發新的API
啟動偵錯模式時
遇到Exception時
竟然會離開偵錯模式

一開始以為是誤觸Visual Studio的設定
但後來想想不對
就算發生Exception
全域的Exception Filter應該也要攔截
而不是中斷整個應用程式

看了一下才發現是
原本同步的方法
改成非同步後
回傳的值沒有從 void 改成 Task
呼叫時也沒有加 await
導致例外無法捕捉
async-void-1.png
async-void-2.png

紀錄一下