try-catch场景 - 使用是否正确使用

时间:2013-04-26 07:55:41

标签: java try-catch

我正在寻找一个代码库,其中域模型由许多嵌套成员变量组成。

考虑这种情况

private static String getSomeStringRepresentation(A input) {
    String result = "";
    try {
         result = input.getTypeA().getTypeAInfo().get(0).getRepresentation();
    } catch (NullPointerException e) {
        Logger.logDebug(e.getMessage());
    }
    return result;
}

在此调用链中,任何方法调用都可能导致NullPointerException。在这种情况下使用catch子句处理它是否正确?这是“可以处理异常”的情况吗?

修改

检查null四次的情况真的很难看。难道你不认为在这种情况下捕获NPE是合理的吗?

这里的问题是在对象上调用一些可能为null的方法。

4 个答案:

答案 0 :(得分:4)

为什么不检查null而不是设置catch块?捕获NullPointerException不被视为良好做法。

If catching null pointer exception is not a good practice, is catching exception a good one?

Is Catching a Null Pointer Exception a Code Smell?

答案 1 :(得分:2)

如果没有严重的原因,捕获NullPointerException不是一个好习惯: 而是检查这样的空对象:

private static String getSomeStringRepresentation(A input) {
    String result = "";
    try {
         if(input != null && input.getTypeA() != null && input.getTypeA().getTypeAInfo() != null && getTypeAInfo().get(0) != null){
              result = input.getTypeA().getTypeAInfo().get(0).getRepresentation();     
         }

    } catch (NullPointerException e) {
        Logger.logDebug(e.getMessage());
    }
    return result;
}

Here is a possible duplicate on the subject.

答案 2 :(得分:1)

NPE只是代码中的一个错误,因此不应该被捕获 - 它们应该被修复。

答案 3 :(得分:0)

NullPointerException表示编程错误,捕获它是错误的。而不是捕捉它修复你的程序中的错误。