如果我有下面的功能,有两种选择
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,我的代码无论如何都不会工作,这是正确的请抛出异常吗?
我的选择是:
- 返回 null 并且应用程序将在某些极端情况下获得 NullPointerException
- 返回 null 并使用 (myObject != null) 检查包装该方法的使用
- 抛出一个异常,这将在运行时将其炸毁
我想我要问的是,这是抛出异常的正确位置吗?也就是说,如果它进入这种情况,我无能为力。这是归类为“异常”还是我应该检查我的方法返回的内容(这使我的代码看起来很糟糕)。如果我知道它不应该返回 null 那么我应该抛出异常对吗?
另外我将如何选择什么异常,或者扩展一个并抛出我自己的?