如果一个方法必须只调用一次而再次调用该方法,则抛出哪个异常?

Which exception to throw if a method is called again when it must only be called once?

我有一个 class,它提供了一个只能调用一次的 public 方法。 如果它再次被调用,抛出什么是正确的异常?

我目前的候选人是RejectedExecutionException

IllegalStateException 可能是合适的,或者类似的东西。例如,调用 Thread::start 两次将抛出 IllegalThreadStateException.

我建议完全不同的东西:

考虑一下你是否可以改变你的设计。

您的界面只允许调用一次方法这一事实对您的界面的用户施加了限制。接口应该使它们易于使用 "the right way";并且很难以错误的方式使用它们。

因此,与其考虑要抛出的异常类型,不如想想解决方案,以简单地防止滥用接口。

例如,将方法设为私有 - 并仅在某些内部单例对象的构造函数中调用。这(或多或少)保证了该方法将被恰好调用一次。