Python中是否有类似Java IllegalStateException的异常?
在Java中,IllegalStateException通常是在一个对象处于不合适的状态时调用某个方法时抛出的错误。那么在Python中,你会用什么来代替呢?
3 个回答
13
ValueError这个名字听起来挺合适的:
当一个内置的操作或函数接收到一个类型正确但值不合适的参数时,就会出现这个错误。而这种情况并不是由更具体的错误,比如IndexError来描述的。
24
ValueError
看起来更像是 Java 中的 IllegalArgumentException
。
我觉得 RuntimeError 更合适:
当检测到一个错误,但这个错误不属于其他任何类别时,就会抛出这个错误。相关的值是一个字符串,说明具体出了什么问题。
大多数情况下,你其实不需要对这种错误进行特别的处理,所以直接使用通用的 RuntimeError
就可以了。
如果你确实想要对它进行不同于其他错误的处理,只需从它派生出你自己的异常即可:
class IllegalStateError(RuntimeError):
pass
46
在Python中,这种情况会出现一个叫做ValueError
的错误,或者它的一个子类。
举个例子,如果你试图对一个已经关闭的文件使用.read()
,就会出现“ValueError: 在关闭的文件上进行输入输出操作”的错误提示。