簡體   English   中英

為什么 asp .net core 不在異步方法中記錄異常?

[英]Why does asp .net core not log exceptions in async methods?

我有一個 .asp 網絡核心項目,它在 Configure 方法中運行一些永無止境的async任務。 在注意到這些方法中的異常沒有記錄到控制台之后。 我只是做了一個小測試。 像這樣的東西:

public async void Configure(IApplicationBuilder app, IWebHostEnvironment env, ApplicationDbContext context)

{
        try
        {
            Task.Run(async () => { throw new Exception("My exception"); });
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }
}

為什么不在async方法中記錄這些異常? 如果我只是在配置中拋出異常,它會毫無問題地拋出並記錄到控制台。

異步 void 方法的異常不能用 catch 捕獲。

可以使用AppDomain.UnhandledException或 GUI/ASP.NET 應用程序的類似包羅萬象事件觀察這些異常,但使用這些事件進行常規異常處理是不可維護性的一個原因。

此處的官方文檔中有更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM