我在 C# 代码中有一个函数,其中定期抛出 NullReferenceException(预期行为),但被捕获。有没有办法告诉 Visual Studio 调试器不要为我的代码的这个特定部分中断这个异常?
编辑我需要在我的代码的其他地方打破这个异常,但不是在同一个函数中。
如果我理解正确并且您尝试做的是调试一些 NullReferenceException(s) 但想在调试时暂时忽略其他异常,您可以通过使用DebuggerNonUserCode属性标记您希望调试器忽略的函数来做到这一点。
[DebuggerNonUserCode]
private void MyMethod()
{
// NullReferenceException exceptions caught in this method will
// not cause the Debugger to stop here..
}
请注意,这仅在所述方法中捕获异常时才有效。NullReferenceException
只是如果您将调试器设置为始终中断异常,它们不会导致调试器中断。并且这仅适用于方法,而不适用于方法内的任意代码部分..
假设异常不会冒泡到调用者,这可以通过DebuggerHiddenAttribute来实现。
从备注
Visual Studio 2005 调试器不会在标有此属性的方法中停止,并且不允许在该方法中设置断点。
[DebuggerHidden]
private static void M()
{
try
{
throw new NullReferenceException();
}
catch (Exception)
{
//log or do something useful so as not to swallow.
}
}
您可以这样做,但它确实会影响解决方案中的所有异常。
Debug -> Exceptions -> Find... "Null Ref"
, 取消勾选 Throw。