我正在寻找一个代码库,其中域模型由许多嵌套成员变量组成。
考虑这种情况
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的方法。
答案 0 :(得分:4)
为什么不检查null而不是设置catch块?捕获NullPointerException不被视为良好做法。
If catching null pointer exception is not a good practice, is catching exception a good one?
也
答案 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;
}
答案 2 :(得分:1)
NPE只是代码中的一个错误,因此不应该被捕获 - 它们应该被修复。
答案 3 :(得分:0)
NullPointerException表示编程错误,捕获它是错误的。而不是捕捉它修复你的程序中的错误。