当我的 C# 应用程序中的断言失败时,我希望抛出异常并且编辑器跳转到该位置。但是会弹出一个中止/重试/忽略消息框。有没有办法控制这种行为?
最佳答案
您可以添加一个自定义 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);
}
}
我可能会派生出您自己的 Exception 类型,它同时采用 message 和 detailMessage,因此异常来自何处更加明显。
您必须将调用堆栈提升到 .Assert() 调用,因为调试器可能会直接将您带到
throw
。你可以这样添加:
Debug.Listeners.Insert(0, new ThrowListener());
关于c# - 可以将 Debug.Assert 设置为仅抛出异常而不是在 C# 中弹出窗口吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14493011/