Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java try块中未捕获NullPointerException_Java_Error Handling_Nullpointerexception_Log4j_Double - Fatal编程技术网

Java try块中未捕获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是一个双倍,因为它是

以下试图通过日志记录捕获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-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异常是流控制的一种形式。