【问题标题】:Can java's assert statement allow you to specify a message?java的assert语句可以让你指定消息吗?
【发布时间】:2008-11-07 20:11:33
【问题描述】:

似乎在断言失败时让断言显示一条消息可能很有用。

当前AssertionError 被抛出,您可以为其指定自定义消息吗?

您能否展示一个执行此操作的示例机制(除了创建您自己的异常类型并抛出它)?

【问题讨论】:

    标签: java assert


    【解决方案1】:

    你当然可以:

    assert x > 0 : "x must be greater than zero, but x = " + x;
    

    更多信息请参见Programming with Assertions

    【讨论】:

      【解决方案2】:
      assert (condition) : "some message";
      

      我建议将条件放在括号中

      assert (y > x): "y is too small. y = " + y;
      

      想象一下,如果你遇到这样的代码......

      assert isTrue() ? true : false : "some message";
      

      不要忘记这与您在 JUnit 中编写的断言无关。

      【讨论】:

      • 没有必要将每个表达式都用括号括起来,因为否则三元组会有点混乱。如果你碰巧有一个三元表达式作为你的断言,你可以包装它。 (虽然我会争辩说,如果你有一个三元表达式作为你的断言,你可能搞砸了,至少你应该将表达式提取到一个命名的方法调用中以清楚起见。)
      【解决方案3】:

      确实如此:

      assert importantVar != null : "The important var was null!";
      

      这会将“重要的变量为空”添加到抛出的异常中。

      【讨论】:

        【解决方案4】:

        如果你使用

        assert Expression1 : Expression2 ;
        

        Expression2 用作 AssertionError 的详细消息。

        【讨论】:

        • 如果 Expression1 为 false,只需添加 AssertionError 即可。
        猜你喜欢
        • 2020-05-24
        • 2016-01-05
        • 2021-10-10
        • 2011-04-02
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        • 2017-01-15
        • 1970-01-01
        相关资源
        最近更新 更多