我想在Java代码中添加调试消息。我想用现代方法改变断言
public void registerForRead(SSLChannel l) {
debug("Error");
boolean wasNotPresent = readListeners.add(l);
assert wasNotPresent : "Already registered";
}
如果我以这种方式更改代码,我会保留逻辑吗?
public void registerForRead(SSLChannel l) {
debug("Error");
boolean wasNotPresent = readListeners.add(l);
if (wasNotPresent) {
debug("Already registered");
}
}
答案 0 :(得分:1)
断言声明断言某些期望总是得到满足,冲突导致AssertionError
因此,明确记录不是这里的替代品
答案 1 :(得分:0)
根据问题中的信息,我只能提出一些改进日志记录的建议:
调试( “错误”);根本不是很有帮助。您希望能够激活调试级别并获得有关错误和位置的明确信息。
断言仅在使用-ea参数执行虚拟机时才有效。 (启用断言)。在生产中,您不希望仅仅为了以防检查而使应用程序崩溃。在开发过程中,您希望了解不应发生的奇怪事情。
有什么不对,但我看不出为什么也没有例外。确保您没有重新发明错误处理机制。例外是为此而设计的。
有时使用旧的System.out.println或等效日志记录可能是开发人员可以接受的。但是,如果你发现自己经常这样做,那就是发育问题的症状(因为难闻的气味):使用良好的记录痕迹,单一测试等。