哪种异常最适合“你不应该在这种情况下运行这种方法”的情况?
问题描述:
在一个接口中,我有一个方法可以在一个实现中使用,但不应该在另一个实现中使用。如果有人在该特定实现中使用该方法,我正在考虑抛出异常。 (这并不是说很容易意外地发现该异常)哪种异常最适合“你不应该在这种情况下运行这种方法”的情况?
更具体地说,该方法是getPlayer(String)
,其按名称得到Player
。 Player
是一个连接到服务器的客户端,但是在我的第二个实现中,不可能获得任何连接的客户端,因为第二个实现代表存储在某个列表中的其他(缓存和技术上离线的)服务器。
任何帮助表示赞赏。让我知道代码粘贴是否能更好地描述场景的性质。
答
我会扔东西的方法已经在非法或不适当的时间调用一个IllegalStateException
信号。换句话说,对于请求的操作,Java环境或Java应用程序不处于适当的状态。
,或者如果您的实现根本不支持的话,你也可以去UnsupportedOperationException
抛出,表明所请求的操作不支持。
听起来像一个作品的作品,而不是继承? – 2014-11-21 12:24:02
是的,听起来像组合会更好。如果您希望仅在接口的少数几个实现中使用给定方法,那么很可能您的模型中出现了错误。 – 2014-11-21 12:27:15
我可能会将接口拆分成一个“OnlineServer”和“OfflineServer”,其中只有OnlineServer包含'getPlayer(String)'方法,尽管我觉得这不是你们的意思。 – octopod 2014-11-21 12:31:36