当应该只调用一次函数时,应该抛出什么参数?

问题描述:

多一点上下文:我有一个监听器类监听网络连接。它的listen方法不应该被调用两次。什么时候该扔?当应该只调用一次函数时,应该抛出什么参数?

如果您要使用预定义的例外,您可能会抛出IllegalStateException,因为对象已处于listening状态。

但是,如果你这样做了,应该有一种方法让客户端找出是否已经调用了listen。例如。一种isListening()方法。

您也可能创建自己的异常,可能从IOException扩展,因为这是一个IO问题。据推测,尝试多次收听失败,因为网络资源已被用于第一次收听。 (类似于套接字绑定)

在这种情况下,我会抛出一个IllegalStateException。它通常用于指示用户试图在对象的当前状态下做出不合法的事情。

由于这是一个逻辑错误,只有当您的库的客户端使用不当时,您抛出的异常应该是一个未经检查的异常(例如java.lang.RuntimeException或其派生物)与检查的异常相对。

java.lang.IllegalStateException被用于该目的:

“是一种方法,在非法或不适当的时间调用信号”但是,这也可能是你自己的自定义异常作出异常层次。