gpt4 book ai didi

c# - 为什么我不能从异步代码中捕获异常?

转载 作者:IT王子 更新时间:2023-10-29 04:18:39 26 4
gpt4 key购买 nike

我读到的所有地方都说下面的代码应该可以工作,但事实并非如此。

public async Task DoSomething(int x)
{
try
{
// Asynchronous implementation.
await Task.Run(() => {
throw new Exception();
x++;
});
}
catch (Exception ex)
{
// Handle exceptions ?
}
}

就是说,我没有捕捉到任何东西并得到一个源自“throw”行的“未处理的异常”。我在这里一无所知。

最佳答案

您打开了“仅我的代码”选项。有了这个,它正在考虑关于“只是你的代码”的异常未处理——因为其他代码正在捕获异常并将其填充到任务中,稍后在 await 调用中重新抛出并被你的 catch 语句捕获。

如果不附加到调试器中,您的 catch 语句将被触发,并按您预期的方式运行。或者您可以从调试器中继续,它会按预期运行。

最好的做法是关闭“仅我的代码”。 IMO,它造成的困惑多于它的值(value)。

关于c# - 为什么我不能从异步代码中捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19865523/

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