C# 调试后台任务中的异常
我有一个抛出错误的后台任务(对象引用未设置为对象的实例)。我希望调试器在异常发生时停止,但它没有停止。我已经启用了所有“公共语言运行时异常”。我很确定这与async/await的使用有关 下面的代码复制了该行为。程序的输出与预期一致: 你好 错误:xxxC# 调试后台任务中的异常,c#,visual-studio,C#,Visual Studio,我有一个抛出错误的后台任务(对象引用未设置为对象的实例)。我希望调试器在异常发生时停止,但它没有停止。我已经启用了所有“公共语言运行时异常”。我很确定这与async/await的使用有关 下面的代码复制了该行为。程序的输出与预期一致: 你好 错误:xxx class Program { public static void Main(string[] args) { new Test().TestMethod(); Console.WriteLin
class Program
{
public static void Main(string[] args)
{
new Test().TestMethod();
Console.WriteLine("Hello!");
Console.ReadLine();
}
}
public class Test
{
public async void TestMethod()
{
try
{
await Task.Run(() =>
{
throw new Exception("xxx"); // Debugger should stop the execution here
});
}
catch (Exception e)
{
Console.WriteLine($"Error: {e.Message}");
}
}
}
仔细检查您的异常设置,当正在抛出的特定异常类型未经处理时,您可能没有将Visual Studio设置为中断:
Hm.我以为VS会在所有例外情况下停止。实际上,当我在主程序中插入抛出相同的异常时(例如,在Console.WriteLine之前),它确实会这样做。另一方面,当我引发一个除法为零时,调试器实际上会在后台任务中停止。是的,它们提供了这些设置,以便您可以选择忽略调试时可能出现的某些异常。实际上,我认为应该是,但事实并非如此。所以我仍然不知道如何让调试器在异常点停止。它们是什么类型的实际异常被抛出,它是否包装了任何其他异常?