我总是写这样的代码:
If SomethingIsTrue Then
'DoThis
ElseIf SomeOtherThingIsTrue Then
'DoThat
Else
Debug.Assert (False)'Doh!! I forgot to handle a certain condition
End If
在VB6中,这很有效。在IDE中测试我的应用程序时,它只是停在Debug.Assert(False)行中,我看到了我错过的地方。
但是VB.NET不止于此,而是给了我一个巨大的消息框。这似乎是Debug.Assert的标准行为。
我有2个问题,请: 1)如何让它在该行中顺利停止而不是显示消息框? 2)我怎样才能使它在运行时(!)没有显示消息框,而是我的应用程序只是在不停止或显示消息框的情况下继续运行?
谢谢!
答案 0 :(得分:2)
我会沿着这一行写点什么:
if debugger.isattached=True then
debugger.break
end if
只需将其包装在共享子中,您只需在else语句中调用它即可。
代码是在没有Visual studio的情况下输入的,所以我希望它可以正常工作。
答案 1 :(得分:0)
如何让它在该行中顺利停止而不是显示消息框?
只需在弹出的消息框中单击重试即可。来自MSDN:
如果应用程序在调试器中运行,则单击“重试”会将您发送到调试器中的代码,如果不是,则提供打开调试器。
单击忽略将忽略该消息。
如何才能在运行时(!)显示消息框,而不是我的应用程序在不停止或显示消息框的情况下继续运行?
我不是说在运行时的意思,因为所有断言都是在代码运行时发生的,因此在运行时。
如果您的意思是在没有调试器的情况下运行应用程序时应忽略断言,只需创建发布版本而不是调试版本。 Debug.Assert
方法仅适用于调试版本,调试版本的重点在于它们易于调试。
如果您仍然要取消消息框,请参阅Customizing Assert behavior:
例如,您可以覆盖TraceListener.Fail方法以写入事件日志,而不是显示Assertion Failed对话框。
要以这种方式自定义输出,您的程序必须包含一个侦听器,您必须从TraceListener继承并覆盖其TraceListener.Fail方法。