问题描述
try
{
instance.SometimesThrowAnUnavoidableException() ; //由于CustomException,Visual Studio暂停执行,我想防止这种情况。
}
catch(CustomException exc)
{
//处理异常并继续。
}
anotherObject.AlsoThrowsCustomException(); //这里我想要VS来捕获CustomException。
在另一部分代码中,我有多种情况发生,其中CustomException 是抛出。我想强制Visual Studio停止打破实例.SometimesThrowAnUnavoidableException()行,因为它掩盖了我有兴趣打破 CustomException 的其他地方的视图。
我尝试过 DebuggerNonUserCode ,但目的不同。
如何禁用Visual Studio仅在特定方法中捕获特定的异常?
您可以使用自定义代码执行两步。
- 禁止自动打破
CustomException
异常。 - 为事件到您的应用程序。在处理程序中,如果实际异常是
CustomException
,请检查调用堆栈以查看是否确实要中断。 - 使用导致Visual Studio停止。
以下是一些示例代码:
private void ListenForEvents()
{
AppDomain.CurrentDomain.FirstChanceException + = HandleFirstChanceException;
}
private void HandleFirstChanceException(object sender,FirstChanceExceptionEventArgs e)
{
异常ex = e.Exception as CustomException;
if(ex == null)
return;
//选项1
if(ex.TargetSite.Name ==SomeThrowAnUnavoidableException)
return;
//选项2
if(ex.StackTrace.Contains(SomeThrowAnUnavoidableException))
return;
//检查ex如果你打这行
Debugger.Break();
}
I've got something like this:
try
{
instance.SometimesThrowAnUnavoidableException(); // Visual Studio pauses the execution here due to the CustomException and I want to prevent that.
}
catch (CustomException exc)
{
// Handle an exception and go on.
}
anotherObject.AlsoThrowsCustomException(); // Here I want VS to catch the CustomException.
In another part of code I have multiple occurencies of situations where CustomException is thrown. I would like to force the Visual Studio to stop breaking on instance.SometimesThrowAnUnavoidableException() line cause it obscures the view of other places where I'm interested in breaking on CustomException.
I tried DebuggerNonUserCode but it is for a different purpose.
How to disable Visual Studio from catching particular exception only in a certain method?
You can use custom code to do this in two steps.
- Disable automatic breaking on the
CustomException
exception. - Add a handler for the
AppDomain.FirstChanceException
event to your application. In the handler, if the actual exception is aCustomException
, check the call stack to see if you actually want to break. - Use the
Debugger.Break();
to cause Visual Studio to stop.
Here is some example code:
private void ListenForEvents()
{
AppDomain.CurrentDomain.FirstChanceException += HandleFirstChanceException;
}
private void HandleFirstChanceException(object sender, FirstChanceExceptionEventArgs e)
{
Exception ex = e.Exception as CustomException;
if (ex == null)
return;
// option 1
if (ex.TargetSite.Name == "SometimesThrowAnUnavoidableException")
return;
// option 2
if (ex.StackTrace.Contains("SometimesThrowAnUnavoidableException"))
return;
// examine ex if you hit this line
Debugger.Break();
}
这篇关于如何不打破例外?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!