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

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...