gpt4 book ai didi

c# - 处理 Task.Run 中的异常

转载 作者:行者123 更新时间:2023-12-03 12:54:06 25 4
gpt4 key购买 nike

我正在尝试处理任务中的异常,到目前为止,我查看了以下链接:

https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/exception-handling-task-parallel-library

How to handle Task.Run Exception

如果我是正确的,他们建议以下代码不会导致用户未处理的异常。

    public async void TestMethod()
{
try
{
await Task.Run(() => { throw new Exception("Test Exception"); });
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}

但是,我遇到了用户未处理的异常。我想在 Task 之外处理异常,这样我就可以避免编写用于从不同线程更改 UI 的代码。我究竟做错了什么?

这是异常的打印屏幕:

enter image description here

最佳答案

要回答您原来的问题,在您对其进行编辑之前,await 的功能之一是它不仅会“解包”返回值,还会“解包”任何异常。因此,如果您需要捕获异常,它不会像使用 .Wait().Result 时那样是 AggregateException .

这是一件好事™

此外,看起来 Visual Studio 配置为中断所有异常,甚至是已处理的异常。这很方便(我总是保持 VS 那样设置,因为有时在捕获和隐藏异常时会发生奇怪的事情),但你只需要意识到这一点。您可以按 F5 或 F10 继续执行,它应该继续进入 catch block 。

关于c# - 处理 Task.Run 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57577952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com