如果我有以下功能,只有两个选择抛出一个异常或返回null
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和应用程序将在一些边缘情况
- 返回NULL得到一个NullPointerException,敷使用的方法与检查
- (myObject的!= NULL)抛出一个异常,在运行时会炸掉它
我想我问的是,这是抛出异常的正确位置?即如果它陷入局面,我无能为力。这是归类为“例外”,还是应该检查我的方法返回的是什么(这会使我的代码看起来很糟糕)。如果我知道它不应该返回null,那么我应该抛出异常吗?
另外,我将如何选择什么异常,或扩展一个并抛出自己的?
为了帮助选择一个例外:http://wuhrr.wordpress.com/2007/11/22/java-exceptions-list/ – Blundell
“既不”建议不吸引力? :-) – missingfaktor
@missingfaktor我在Android中编码,所以不能引入其他重型框架 – Blundell