加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 07:58:47 所属栏目:百科 来源:网络整理
导读:我研究了 this article on MSDN,以及有关此主题的SO的一些问题/答案,但无法解释为什么下面的代码不起作用(在示例控制台应用程序中). 根据MSDN,预计会抛出AggregateException,它将包含一个带有hello消息的内部异常.相反,这个hello异常未处理.它发生在调试器内
我研究了 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读