在try块中没有捕获到NullPointerException

时间:2013-04-04 06:17:29

标签: 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是一个双倍,因为它是一个百分比,我愿意将它改为一个int,如果这就是使其工作所需要的。如果用户意外添加了%符号,我还想检查try和catch技术。我希望我的记录器能够捕获NumberFormatException以进行测试。

更新:好的感谢您的反馈(我不知何故忽略了这一点)。它仍然无法运作。我认为这可能是问题所在:

          (results1 != 00.00)

这是检查双精度输入是否为空的最佳方法。另外我如何检查是否添加了字符串?

5 个答案:

答案 0 :(得分:2)

NullPointerExeption不是NumberFormatException的实例,因此它没有被抓住。

你应该抓住这两者的共同祖先,这里是文档:NumberFormatExceptionNullPointerException。但是从我的观点来看,最好抛出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。