【问题标题】:Prevent debugger from stopping on an Exception in a Compiled LambdaExpression防止调试器停止在已编译的 LambdaExpression 中出现异常
【发布时间】:2012-06-25 05:52:29
【问题描述】:

在我的程序中,我创建了动态 lambda 表达式,然后将它们编译为委托。然后调用这些委托以从我的实体中提取信息。 一些代表可能会抛出异常,我已经捕获了我调用代表的异常。我已启用“仅启用我的代码”并将 [DebuggerNonUserCode] 属性应用于 LambdaExpression 的创建位置、编译位置和调用位置。但是因为在Debug>Exceptions>Common Language Runtime Exceptions中勾选了Thrown复选框,Visual Studio总是在出现错误时停止,这给开发者带来了很大的不便。

似乎 [DebuggerNonUserCode] 应该以某种方式应用于已编译的委托,但是如何?还是有其他建议?

谢谢。

【问题讨论】:

  • 它不是在第一次更改异常时停止吗?它们可以单独禁用。
  • 不,它总是在出现错误时停止,而不仅仅是第一次。
  • 你确定异常在某处被捕获。如果有未捕获的异常会导致应用程序崩溃,Visual Studio 总是会显示异常消息。
  • 您可以先过滤特定异常的更改异常,或者将 lambda 代码更改为不会引发异常的内容。
  • 即使您可以应用该属性,它似乎在 MSVS 2015 中有一个错误,无法达到目的:stackoverflow.com/questions/39382551

标签: c# visual-studio-2010 visual-studio debugging attributes


【解决方案1】:

据我所知,您不能将属性应用于使用表达式生成的匿名方法,除了动态类型生成可能存在一些可怕的问题。

但是,一个可能的建议是转到Debug > Exceptions 中的异常菜单,然后选择您要具体中断的异常。如果您的表达式倾向于引发特定类型的异常,您可以禁用对这些异常的中断。

【讨论】:

  • 嗯...我可能愿意采取那些可怕的步骤。任何指向正确资源的指针?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 2018-07-11
  • 1970-01-01
相关资源
最近更新 更多