Python中是否存在类似于Java IllegalStateException的问题?

Tuu*_*lli 53 python java exception

当在处于不适当状态的对象上调用方法时,通常在Java中使用IllegalStateException.你会在Python中使用什么?

dda*_*daa 40

在Python中,那将是ValueError或者它的子类.

例如,尝试.read()关闭文件会引发"ValueError:对已关闭文件的I/O操作".


mat*_*t b 12

ValueError听起来对我很合适:

当内置操作或函数接收到具有正确类型但不适当值的参数时引发,并且情况不会由更准确的异常(如IndexError)描述.

  • 不幸的是,它引用了方法的参数,而不是对象的状态...... (13认同)
  • 在Python中,`self`*是一个参数! (5认同)
  • 如果函数没有参数怎么办? (3认同)
  • “不适当的值”足够模糊,我认为它适用于将参数传递给在某些情况下可以的函数,但由于对象的当前状态而无效。 (2认同)

ros*_*ori 6

ValueError似乎更像Java的IllegalArgumentException

RuntimeError听起来更适合我:

在检测到不属于任何其他类别的错误时引发。关联的值是一个字符串,指示确切地出错了。

多数情况下,无论如何,您都不希望对此类错误进行任何特殊的错误处理,因此泛型RuntimeError就足够了。

如果您确实希望将其与其他错误以不同的方式处理,则只需从中派生您自己的异常即可:

class IllegalStateError(RuntimeError):
    pass
Run Code Online (Sandbox Code Playgroud)