private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
return null;
}
private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
throw new NoSuchFieldError("No blank piece found!");
}
从这个方法中,我知道它应该总是返回一个对象,其中的“片段”之一始终是isBlank() == true,最后的返回null只是为了让编译器满意。既然如此,如果它返回null,我的代码也无法正常工作,那么抛出异常是否正确呢?
我的选择有:
1. 返回null,应用程序将在某些边缘情况下获得NullPointerException; 2. 返回null并包装使用该方法的(myObject != null)检查; 3. 抛出会在运行时使其崩溃的异常。
我想问的是,抛出异常的位置是否正确?即使进入这种情况,我也无能为力。这算是“异常”吗?还是应该对方法返回值进行null检查(这会使我的代码看起来很糟糕)。如果我知道它不应该返回null,那么我应该抛出异常,对吧?
此外,我该如何选择异常,或者扩展一个异常并抛出自己的异常?