c# – 如何使用调试器处理任务中的异常?

前端之家收集整理的这篇文章主要介绍了c# – 如何使用调试器处理任务中的异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我研究了 this article on MSDN,以及有关此主题的SO的一些问题/答案,但无法解释为什么下面的代码不起作用(在示例控制台应用程序中).

根据MSDN,预计会抛出AggregateException,它将包含一个带有hello消息的内部异常.相反,这个hello异常未处理.它发生在调试器内部.

如果按“继续”或“独立运行”,则按预期工作.有没有办法避免在VS中一直按下继续?毕竟,Try … Catch块中的任何内容都被认为是在单线程编程模型中处理的.否则,调试可能是一场噩梦.

VB.NET

Sub Main()
  Try
    Task.Factory.StartNew(AddressOf TaskThatThrowsException).Wait()
  Catch ex As AggregateException
    Console.WriteLine(ex.ToString) 'does not get here until you hit Continue
  End Try
End Sub

Private Sub TaskThatThrowsException()
  Throw New Exception("hello") 'exception was unhandled
End Sub

C#

namespace ConsoleApplication1 {
  class Program {
    static void Main(string[] args) {
      try {
        Task.Factory.StartNew(TaskThatThrowsException).Wait();
      }
      catch (AggregateException ex) {
        Console.WriteLine(ex.ToString()); //never gets here                
      }
    }

    static void TaskThatThrowsException() {
      throw new Exception("hello"); //exception was unhandled            
    }
  }
}

我有什么明显的遗失吗?

解决方法

设置“启用我的代码”会对此产生影响.在工具 – >选项,调试 – >常规 – >下启用Just My Code.如果你打开它,如果你的代码没有处理它,它会认为异常未处理.尝试关闭此选项.

看到:
http://msdn.microsoft.com/en-us/library/dd997415.aspx

猜你在找的C#相关文章