说我有一个
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
错误的状态/价值?
现在,哪个标准异常最适合从中派生出NotReadyException?
Exception
别乱搞别的.
http://code.google.com/p/soc/wiki/PythonStyleGuide#Exceptions
您的异常处理用例是什么?
如果您从例如派生例外,ValueError
您是否会编写一个用于except ValueError:
捕获两个异常并以完全相同的方式处理它们的处理程序?不太可能.
ValueError
当更具体的例外情况不合适时,这是一个包罗万象.您的例外是非常具体的.
当你有像这样的特定于应用程序的异常时,它与内置异常共享任何有用语义的几率很低.将新的和现有的异常实际组合到单个处理程序中的几率非常非常低.
关于您将特定于应用程序的异常与一般异常组合的唯一时间是except Exception:
在某些catch-all记录器中使用.