[英]Can Debug.Assert be set to just throw an exception instead of popping up a window in C#?
每当我的C#应用程序中的断言失败时,我都想引发一个异常并使编辑器跳到该位置。 但是会弹出一个中止/重试/忽略消息框。 有没有办法控制这种行为?
不直接:这就是Debug.Assert所做的。 请参阅说明文件
http://msdn.microsoft.com/zh-CN/library/system.diagnostics.debug.aspx
也许您想使用除Debug.Assert之外的其他工具? 例如,如果无法处理就抛出异常,或者在需要时调用一些应用程序定义的onError处理程序?
或者,您可以通过添加侦听器并挂接到该侦听器来获得所需的内容。 请参阅文档。
您可以添加一个自定义的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);
}
}
我可能会派生出您自己的同时包含message和detailMessage的Exception类型,因此更明显的是异常来自何处。
您将不得不提高对.Assert()调用的调用堆栈,因为调试器可能会直接将您带到throw
。
您可以这样添加它:
Debug.Listeners.Insert(0, new ThrowListener());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.