当请求的元素不存在时,抛出什么样的Java异常?

当请求的元素不存在时,抛出什么样的Java异常?,java,Java,当查询数据库时找不到元素时,我想抛出一个异常。我的数据库集成返回null,出于各种原因,我宁愿抛出一个异常。以下是针对我的情况的psedoocode: Object result = db.query(statement); if (result == null) { throw new SomeException(); } 但是,我不确定在这样的情况下抛出什么样的异常,因为请求的项不存在。我考虑过的是: 抛出以指示已向方法传递非法或不适当的参数 为该方法提供了一个有效的参数

当查询数据库时找不到元素时,我想抛出一个异常。我的数据库集成返回
null
,出于各种原因,我宁愿抛出一个异常。以下是针对我的情况的psedoocode:

Object result = db.query(statement);
if (result == null) {
    throw new SomeException();
}
但是,我不确定在这样的情况下抛出什么样的异常,因为请求的项不存在。我考虑过的是:

    • 抛出以指示已向方法传递非法或不适当的参数

    • 为该方法提供了一个有效的参数,但该参数在数据库中不存在。因此,这似乎是一个糟糕的使用
    • 枚举的
      nextElement
      方法引发,以指示枚举中没有更多元素

    • 这个名字听起来不错,但是描述说它是用于枚举的,这不是我在这里使用的
  • (Java EE)
    • 在服务器上找不到指示客户端请求的资源的运行时异常

    • 描述中说,这是针对服务器上找不到的客户端请求的资源,这不是我在这里要做的
那么,在请求的元素不存在的情况下,应该抛出什么样的异常呢?还有其他我没有考虑的吗

我更喜欢核心Java中的一个例外。如果没有合适的例外情况,我愿意提出我自己的例外情况,但如果存在的话,我更希望有一个现有的例外情况,以免重新发明轮子


编辑:我不认为这主要是基于意见的,因为每个例外都有记录在案的目的。我想知道哪个异常的文档化用途最接近我要查找的情况。

升级到Java 8 javadoc。为什么不使用您自己的异常?我认为您应该重新考虑引发异常。异常用于异常情况。如果您希望将不存在的成员传递给方法的情况是正常的,那么您真的不应该使用异常。只是我的意见。投票删除它;这将使它更好,因为它是离题的:基于意见的评论中的所有意见都证明了这一点。你真的需要做一些关于如何使用异常的研究,如果你一开始问这个问题,你没有正确地使用它们。您的问题中没有任何异常情况。如果查询应该返回集合,我将返回一个空集合。如果查询应该返回单个对象,我将返回可选的.Upgrade到Java8Javadoc。为什么不使用您自己的异常呢?我认为您应该重新考虑抛出异常。异常用于异常情况。如果您希望将不存在的成员传递给方法的情况是正常的,那么您真的不应该使用异常。只是我的意见。投票删除它;这将使它更好,因为它是离题的:基于意见的评论中的所有意见都证明了这一点。你真的需要做一些关于如何使用异常的研究,如果你一开始问这个问题,你没有正确地使用它们。您的问题中没有任何异常情况。如果查询应该返回集合,我将返回一个空集合。如果查询应该返回单个对象,我将返回可选的。