Python Exceptions for when an if statement fails
我有一个简单的异常类:
1 2 3 4 5 | class Error(Exception): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg |
我还有一个 if 语句,我想根据失败情况抛出不同的异常。
1 2 3 4 5 6 7 | if not self.active: if len(self.recording) > index: # something else: raise Error("failed because index not in bounds") else: raise Error("failed because the object is not active") |
这很好用,但是嵌套
这样的东西
1 | if not self.active and len(self.recording) > index: |
然后根据 if 失败的位置/方式抛出异常。
这样的事情可能吗?嵌套
提前谢谢你!
**我使用的一些库需要 Python 2.7,因此,代码适用于 2.7
只有几个嵌套的
但是,您可以像这样使用
1 2 3 4 5 6 7 8 9 | if not self.active: raise Error("failed because the object is not active") elif len(self.recording) <= index: # The interpreter will enter this block if self.active evaluates to True # AND index is bigger or equal than len(self.recording), which is when you # raise the bounds Error raise Error("failed because index not in bounds") else: # something |
如果
编辑:
正如@tdelaney 在他的评论中正确指出的那样,您甚至不需要
1 2 3 4 5 | if not self.active: raise Error("failed because the object is not active") if len(self.recording) <= index: raise Error("failed because index not in bounds") # something |