假设您有一个名为Timer
的班级。当用户尝试调用方法Timer#start()
时,代码会检查计时器是否已经启动。如果有,则无法再次启动。现在,假设这个类是库/ API的一部分。开发人员无法知道该方法没有被不恰当地调用,因此他们希望关注任何不正确的调用。这样做的两种方法是:a)打印一个简单的错误消息(某某方法不恰当地称为方法),或b)抛出异常。
在我看来,最有意义的异常是IllegalAccessException,尽管这不是Sun所说的意图。但是,我已经看到它用于与可见性无关的情况,并且只是抛出它来引起对不良呼叫的注意。我的问题是,这种情况是否需要(哈哈,双关语)说异常,还是有更好的适合它?或者,最好是创建一个新的或只是打印一个错误行?
答案 0 :(得分:1)
根据您的要求,似乎IllegalStateException
更合适。由于你的班级正在管理计时器的某些状态。
来自Java Doc的IllegalStateException
:
表示某个方法已被非法或非法调用 不恰当的时间换句话说,Java环境或 Java应用程序未处于所请求的适当状态 操作
来自IllegalAccessException
的Java文档,它说:
应用程序尝试时抛出IllegalAccessException 反射创建一个实例(除了数组), 设置或获取字段,或调用方法,但当前 执行方法无法访问定义 指定的类,字段,方法或构造函数。
所以,IllegalAccessException
根本不合适。
答案 1 :(得分:0)
这种情况非常明显地与IllegalAccessException
的语义不符,但听起来非常适合IllegalStateException
。