VB.NET:在debug.assert(false)行中平稳停止



我总是这样写代码:

If SomethingIsTrue Then
'DoThis
ElseIf SomeOtherThingIsTrue Then
'DoThat
Else
Debug.Assert (False)'Doh!! I forgot to handle a certain condition
End If

在VB6中,这非常有效。在IDE中测试我的应用程序时,它只是在调试中停止了。断言(False)行,然后我看到我遗漏了什么。

但VB.NET并没有就此止步,而是给了我一个巨大的消息框。这似乎是Debug的标准行为。明确肯定

我有两个问题,请回答:1) 我如何才能让它在那一行平稳地停止,而不是显示消息框?2) 我如何才能在运行时(!)不显示消息框,而是让我的应用程序继续运行而不停止或显示消息框?

谢谢!

我会沿着这条线写一些东西:

if debugger.isattached=True then
debugger.break
end if

只需将其封装在一个共享子中,就可以简单地在else语句中调用它。

代码是在没有visual studio的情况下键入的,所以我希望它能工作。

如何使它在该行中平稳停止,而不是显示消息框?

只需在弹出的消息框上单击重试。来自MSDN:

如果应用程序正在调试器中运行,则单击"重试"会将您发送到调试器中的代码,如果应用程序未在调试器中运行则会提供打开调试器的功能。

单击忽略将忽略该消息。


我如何才能在运行时(!)不显示消息框,而是让我的应用程序继续运行而不停止或显示消息框?

我不是指运行时的意思,因为所有断言都发生在代码运行时,因此是在运行时。

如果您的意思是在没有调试器的情况下运行应用程序时应该忽略断言,那么只需生成发布版本,而不是调试版本。Debug.Assert方法仅适用于调试构建,而调试构建的要点是它们易于调试。


如果您仍然想抑制消息框,请参阅自定义断言行为

例如,您可以覆盖TraceListener。Fail方法写入事件日志,而不是显示"断言失败"对话框。

要以这种方式自定义输出,程序必须包含侦听器,并且必须从TraceListener继承并覆盖其TraceListener。失败方法。

最新更新