以下用于尝试通过日志记录捕获NullPointerException
的代码无效。有人可以看看这个并指导我。
try {
if (results1 != 00.00) {
throw new Exception("Data must be added");
}
}
catch (Exception e) {
log.error("You have an error", e);
}
用户必须输入results1的值,因为它用于计算。结果1是一个双倍,因为它是一个百分比,我愿意将它改为一个int,如果这就是使其工作所需要的。如果用户意外添加了%符号,我还想检查try和catch技术。我希望我的记录器能够捕获NumberFormatException以进行测试。
更新:好的感谢您的反馈(我不知何故忽略了这一点)。它仍然无法运作。我认为这可能是问题所在:
(results1 != 00.00)
这是检查双精度输入是否为空的最佳方法。另外我如何检查是否添加了字符串?
答案 0 :(得分:2)
NullPointerExeption
不是NumberFormatException
的实例,因此它没有被抓住。
你应该抓住这两者的共同祖先,这里是文档:NumberFormatException和NullPointerException。但是从我的观点来看,最好抛出IllegalArgumentException
并正确处理它。
答案 1 :(得分:2)
NullPointerException
不是instanceof
NumberFormatException
。您需要捕获正确的异常。
答案 2 :(得分:0)
如果您将代码更改为此代码,则应该有效:
try {
if (results1 != 00.00 ) {
throw new Exception("Data must be added");
}
} catch (Exception e) {
log.error("You have an error", e);
}
答案 3 :(得分:0)
您必须将空指针异常作为另一个catch块捕获。空指针异常不是Numberformat异常的实例
答案 4 :(得分:0)
您应该捕获NullPointerException而不是NumberFormatException。