【发布时间】:2020-09-10 13:52:03
【问题描述】:
我有一个 .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 方法中记录这些异常?如果我只是在配置中抛出异常,它会毫无问题地抛出并记录到控制台。
【问题讨论】:
-
Task 中抛出的所有异常只能使用 AggregateException 捕获
-
如果您希望能够捕获异常,您应该将函数的返回类型从“void”替换为“Task”。
标签: c# asp.net-core exception .net-core