当我的 C# 应用程序中的断言失败时,我希望抛出一个异常并且编辑器跳转到该位置。但是会弹出一个中止/重试/忽略消息框。有没有办法控制这种行为?
问问题
399 次
2 回答
3
您可以添加一个自定义 TraceListener ,它会在任一方法上引发异常.Fail()
:
public class ThrowListener : TextWriterTraceListener
{
public override void Fail(string message)
{
throw new Exception(message);
}
public override void Fail(string message, string detailMessage)
{
throw new Exception(message);
}
}
我可能会派生出你自己的异常类型,它同时接受消息和 detailMessage,因此异常来自哪里更明显。
您必须将调用堆栈提升到 .Assert() 调用,因为调试器可能会直接将您带到 .Assert() 调用throw
。
您可以像这样添加它:
Debug.Listeners.Insert(0, new ThrowListener());
于 2013-01-24T02:46:06.203 回答
2
不直接:这就是 Debug.Assert 所做的。请参阅文档
http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx
也许您想使用除 Debug.Assert 之外的其他东西?比如如果无法处理就简单地抛出一个异常,或者在需要时调用一些应用程序定义的 onError 处理程序?
或者,您可以通过添加侦听器并连接到该侦听器来获得所需的内容。请参阅文档。
于 2013-01-24T02:42:42.577 回答