物体不在正确的状态; 哪个例外是合适的?

Fre*_*Foo 3 python exception

说我有一个

class Rocket(object):
    def __init__(self):
        self.ready = False

    def prepare_for_takeoff(self):
        self.ready = True

    def takeoff(self):
        if not self.ready:
            raise NotReadyException("not ready!")
        print("Liftoff!")
Run Code Online (Sandbox Code Playgroud)

现在,哪种标准例外最适合从中衍生NotReadyException出来?是不是ValueError因为self错误的状态/价值?

S.L*_*ott 6

现在,哪个标准异常最适合从中派生出NotReadyException?

Exception

别乱搞别的.

http://code.google.com/p/soc/wiki/PythonStyleGuide#Exceptions

您的异常处理用例是什么?

如果您从例如派生例外,ValueError您是否会编写一个用于except ValueError:捕获两个异常并以完全相同的方式处理它们的处理程序?不太可能.

ValueError当更具体的例外情况不合适时,这是一个包罗万象.您的例外是非常具体的.

当你有像这样的特定于应用程序的异常时,它与内置异常共享任何有用语义的几率很低.将新的和现有的异常实际组合到单个处理程序中的几率非常非常低.

关于您将特定于应用程序的异常与一般异常组合的唯一时间是except Exception:在某些catch-all记录器中使用.