为什么assert会附加一个默认的断言消息

时间:2012-05-07 06:17:32

标签: java assert assertions

使用断言,例如


try{ 
 assert email!=null : "Email is required"
} catch (AssertionError ae) {
 System.out.println(ae.getMessage());
}

以上打印需要电子邮件。表达式:电子邮件!= null

我不想要这个额外的消息表达式:电子邮件!= null 我知道我可以子串,但这就是黑客攻击。

2 个答案:

答案 0 :(得分:3)

你在这里误用了assert。它不是用于控制程序的流程。你应该在这里使用if

当您确定不会发生这种情况时,您应该只使用assert。在这种情况下,应用程序应该崩溃并打印出错的地方。请注意,应用程序启动时可能会关闭断言。

答案 1 :(得分:0)

没有简单的方法。请记住,assert通常是在正确的程序运行期间永远不会发生的事情。因此,关联的消息仅用于调试。

来自official documentation

  

请注意,详细消息是用户级错误消息,因此通常无需单独理解这些消息或将其国际化。详细消息应在完整堆栈跟踪的上下文中与包含失败断言的源代码一起解释。