Den*_*nis 2 java coding-style exception-handling nullpointerexception
我想设置Integer一个特定的值,即0或在另一个类中找到的属性.由于该类的实例存储在Map的ListS,但这个地图可以在点为空,我不知道它的两种方式来处理这个更好.
Integer value = 0;
if (myMap != null &&
myMap.get(keyForList) != null &&
myMap.get(keyForList).get(0) != null) {
value = myMap.get(keyForList).get(0).getAttribute();
}
Run Code Online (Sandbox Code Playgroud)
或者我认为更好,更有效的方式:
Integer value = 0;
try {
value = myMap.get(keyForList).get(0).getAttribute();
} catch (NullPointerException e) {
// without doing anything value is 0 as expected
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
标准建议是不应将异常用于流量控制.它们相对较重,打破了标准的控制流程,因此很难遵循.它们应该用于特殊情况.
这并不是说你不能用它们从条件中恢复,但是如果检查(比如说)null或零是容易/更明确的,那么你应该优先考虑.
我会注意到(但是)Java是冗长的,并且没有简单的操作来处理代码中的默认值/空值,例如:
Integer result = a.getB().getC().getD();
Run Code Online (Sandbox Code Playgroud)
因此,我的建议是:
a本身得到b,对象b会得到c,等等.在其目前的形式它打破了德米特法律,并公开你如何a,b,c等都是由.请记住,OO是为了让对象为你做事,而不是让他们告诉你他们是由什么组成的,并让你自己做.