Java try块中未捕获NullPointerException
以下试图通过日志记录捕获NullPointerException的代码无效。有人能看看这个并指导我吗Java try块中未捕获NullPointerException,java,error-handling,nullpointerexception,log4j,double,Java,Error Handling,Nullpointerexception,Log4j,Double,以下试图通过日志记录捕获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是一个双倍,因为它是
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-and-catch技术。我希望我的记录器捕获NumberFormatException以进行测试
更新:好的,谢谢你的反馈,我忽略了这一点。它仍然不起作用。我认为这可能是问题所在:
(results1 != 00.00)
这是检查双精度输入是否为空的最佳方法。另外,如何检查是否添加了字符串 NullPointerExection不是NumberFormatException的实例,因此它没有被捕获
您应该了解这两者的共同祖先,以下是文档:和。但在我看来,最好抛出IllegalArgumentException并正确处理它。NullPointerException不是NumberFormatException的实例。您需要捕获正确的异常。如果您将代码更改为此,它应该可以工作:
try {
if (results1 != 00.00 ) {
throw new Exception("Data must be added");
}
} catch (Exception e) {
log.error("You have an error", e);
}
必须将null指针异常作为另一个catch块捕获。空指针异常不是Numberformat异常的实例您应该捕获NullPointerException而不是NumberFormatException。为什么要为结果1抛出NullPointerException!=00.00!这没有意义。你应该为你编辑的部分创建一个新问题。接受当前问题的一个答案。哇,这个问题已经发生了很大的变化,因此旧的答案不再有意义。难道没有人会指出对控制流使用异常是个坏主意吗?另外:如果result1是一个double,它永远不会导致NumberFormatException或NullPointerException。请展示更多的代码,并解释您正试图执行的操作。此代码不可能引发NullPointerException,因此它当然不会被捕获@AdriaanKoster异常是流控制的一种形式。