当没有与键关联的对象时应该抛出什么异常?

What exception should be thrown when there is no object associated with a key?

我有一个 API,我在其中检查是否有任何现有对象可用于给定键。如果可用,则更新现有对象,否则创建新对象并保存。

如果出现key可用但没有对象链接到它的情况,应该抛出哪个异常?

这实际上取决于您想如何构建 API。我认为你需要决定的第一件事是:这个异常是否应该被调用者捕获?换句话说,它是 RuntimeException 还是不是?

我想如果你想抛出异常,那是因为你的数据模型不应该有给定键的空/空对象。因此,我会主张 IllegalStateExceptionNoSuchElementException ,它扩展了 RuntimeException。这意味着不会强制调用者捕获异常。

如果你想强制调用者捕获异常,我建议你创建自己的异常,它只是扩展 Exception


编辑:

例如,一个名为"MissingValueException"的class定义如下:

public class MissingValueException extends Exception {
    private static final long serialVersionUID = 1L;

    public MissingValueException(final String message) {
        super(message);
    }

    public MissingValueException(final String message, final Exception root) {
        super(message, root);
    }
}