假设您有一个名为Timer的类。当用户试图调用方法Timer#start()时,代码将检查计时器是否已经启动。如果有,那就不能再启动了。现在,假设这个类是库/API的一部分。开发人员无法知道该方法没有被不恰当地调用,因此他们希望引起对任何不适当调用的注意。这样做的两种方法是:( a)打印一个简单的错误消息(所以错误地调用了一个方法);或者( b)抛出一个异常。
在我看来,最有意义的例外是一个IllegalAccessException,尽管它的意图并不像Sun所说的那样。但是,我已经看到它在与可见性无关的情况下使用,并且只是为了引起对一个坏电话的注意。我的问题是,这种情况是否需要(哈哈,双关)这样的例外,还是有一个更适合它的?或者,最好是创建一个新的,还是简单地打印一条错误行?
发布于 2014-03-02 07:44:07
根据您的需求,IllegalStateException似乎更合适。当您的类正在管理计时器的某些状态时。
来自Java的IllegalStateException:
在非法或不适当的时间调用方法的信号。换句话说,对于请求的操作,Java环境或Java应用程序没有处于适当的状态。
从Java到IllegalAccessException,它说:
当应用程序试图反射地创建实例(数组除外)、设置或获取字段或调用方法时,将引发IllegalAccessException,但当前正在执行的方法无法访问指定的类、字段、方法或构造函数的定义。
因此,IllegalAccessException一点也不合适。
发布于 2014-03-02 07:42:30
这个条件显然与IllegalAccessException的语义不匹配,但听起来很适合IllegalStateException。
https://stackoverflow.com/questions/22125102
复制相似问题