-4

以下尝试NullPointerException通过日志记录捕获的代码不起作用。有人可以看看这个并指导我。

try {
    if (results1 != 00.00) {
        throw new Exception("Data must be added");
    }
}
catch (Exception e) {  
    log.error("You have an error", e);
}  

用户必须为 results1 输入一个值,因为它用于计算。Results1 是一个双倍,因为它是一个百分比,我愿意将它更改为一个 int 如果这就是让它工作所需要的。如果用户不小心添加了 % 符号,我还想检查一下 try and catch 技术。我希望我的记录器捕获 NumberFormatException 以进行测试。

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

          (results1 != 00.00)

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

4

5 回答 5

2

NullPointerExeptionNumberFormatException不是因此它没有被抓住的一个例子。

您应该了解这两者的共同祖先,这里是文档:NumberFormatExceptionNullPointerException。但从我的角度来看,最好IllegalArgumentException正确地抛出和处理它。

于 2013-04-04T06:19:15.073 回答
2

NullPointerException不是一个instanceof NumberFormatException。您需要捕获正确的异常。

于 2013-04-04T06:19:31.733 回答
0

如果您将代码更改为此它应该可以工作:

try {
   if (results1 != 00.00 ) { 
    throw new Exception("Data must be added"); 
   }
} catch (Exception e)   {  
   log.error("You have an error", e);
}  
于 2013-04-04T06:21:44.490 回答
0

您必须将空指针异常作为另一个 catch 块来捕获。空指针异常不是 Numberformat 异常的实例

于 2013-04-04T06:22:35.900 回答
0

您应该捕获 NullPointerException 而不是 NumberFormatException。

于 2013-04-04T06:36:12.180 回答