10

我有一个关于 Debug.Fail 方法的问题,这让我很困惑。它来自 MeassureUp 测试,如下所示:

为了提高代码的可靠性,您需要验证一个重要的值并在该值设置不正确时停止执行。但是,您只想在调试期间停止执行。您不希望使用您的应用程序发布版本的用户遇到问题。

您应该使用哪种方法?

  • Debug.Assert(我的回答)
  • 调试.刷新
  • Debug.Fail(根据 MeassureUp 测试的正确答案)
  • 调试.缩进

我回答 Debug.Assert 因为它有一个布尔条件作为参数,这意味着它可以验证一个值。Debug.Fail 仅将字符串作为应输出的任何消息的参数。但这是官方的推理:

  • Debug.Fail 导致调试器在代码行中断并输出失败消息。
  • Debug.Assert 评估条件并显示消息,但不会中断处理。
  • Debug.Flush 刷新调试输出缓冲区。
  • Debug.Indent 控制输出格式。

Debug.Assert“不中断处理”是什么意思?Debug.Assert 和 Debug.Fail 都提供了一个类似的带有 Abort、Retry 和 Ignore 按钮的弹出窗口。此外,Debug.Assert 计算一个表达式。

官方答案是错误的,包括他们的推理还是我误解了什么?

4

2 回答 2

19

只是没有区别。当条件为假时,Debug.Assert() 调用 Fail()。所以 Assert() 和调用 Fail() 的 if 语句之间没有区别。

我建议你找一个更好的网站。

于 2013-05-25T14:02:07.480 回答
1

Debug.Fail()通常在不应该发生的switch/default:语句中使用default:(除了抛出异常或任何其他错误处理)

于 2020-04-10T10:05:27.380 回答