为什么 asp .net core 不在异步方法中记录异常?

Not*_*bad 0 c# exception .net-core asp.net-core

我有一个 .asp 网络核心项目,它async在 Configure 方法中运行一些永无止境的任务。在注意到这些方法中的异常没有记录到控制台之后。我只是做了一个小测试。像这样的东西:

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;
        }
}
Run Code Online (Sandbox Code Playgroud)

为什么不在async方法中记录这些异常?如果我只是在配置中抛出异常,它会毫无问题地抛出并记录到控制台。

Mih*_*myh 5

异步 void 方法的异常不能用 catch 捕获。

可以使用AppDomain.UnhandledExceptionGUI/ASP.NET 应用程序的 或 类似的包罗万象事件来观察这些异常,但使用这些事件进行常规异常处理会导致不可维护性。

此处的官方文档中有更多详细信息。