Java:检查是否为空或允许异常处理


问题内容

我想知道与使用if语句先检查null相比,使用try / exception处理null的成本。

提供更多信息。因为在此应用程序中,有> 50%的机会获得空值。如果未输入任何数据,则通常为null。因此,尝试使用null进行计算是很平常的事。

话虽这么说,如果我先使用if语句在计算之前先检查null并且不首先尝试计算是否会提高性能,或者仅抛出异常并对其进行处理会更便宜?

感谢您的任何建议:-)

感谢您提供的深思熟虑的反馈!这是PSEUDOcode示例,用于阐明原始问题:

BigDecimal value1 = null //assume value1 came from DB as null
BigDecimal divisor = new BigDecimal("2.0");

try{
    if(value1 != null){ //does this enhance performance?... >50% chance that value1 WILL be null
        value1.divide(divisor);
    }
}
catch (Exception e){
    //process, log etc. the exception
    //do this EVERYTIME I get null... or use an if statement
    //to capture other exceptions.
}

问题答案:

我建议检查null而不是进行计算,而不是抛出异常。

例外应该是“例外”且很少见,不是管理控制流的方法。

我还建议您与客户建立有关输入参数的合同。如果允许为空,则将其拼出;如果不是,请明确应传递的内容,默认值,以及如果传递了空值,则保证返回的内容。