Debug.Fail和Debug.Assert

时间:2013-05-25 13:21:26

标签: .net debugging

我对Debug.Fail方法有疑问,这让我很困惑。它来自MeassureUp测试,如下所示:

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

您应该使用哪种方法?

  • Debug.Assert(我的回答)
  • Debug.Flush
  • Debug.Fail(根据MeassureUp测试的正确答案)
  • Debug.Indent

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

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

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

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

2 个答案:

答案 0 :(得分:12)

没有区别。当条件为false时,Debug.Assert()调用Fail()。因此,Assert()和调用Fail()的if语句之间没有区别。

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

答案 1 :(得分:1)

我通常在Debug.Fail()永远不会发生的switch/default:语句中使用default:(除了引发异常或其他任何错误处理)