抛出异常或者返回null

2024-01-08

如果我有下面的功能,有两个选择

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 那么我应该抛出异常,对吧?

另外,我将如何选择什么异常,或者扩展一个异常并抛出我自己的异常?


我想我要问的是,这是抛出异常的正确位置吗?

如果它是一个异常的情况,那么是的。如果找不到任何符合条件的可能性是expected那么情况不是异常的你应该回来null.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抛出异常或者返回null 的相关文章

随机推荐