【发布时间】:2019-09-28 09:24:06
【问题描述】:
最近遇到了一个从未见过的代码示例:
try:
# a simple bunch of code
if sample == 0:
return True
else:
raise ExampleError()
except not ExampleError:
raise AnotherExampleError()
它是如何工作的(如果可以的话)?
【问题讨论】:
-
你还记得你在哪里遇到这个例子吗?你能和我们分享一下吗?上下文可能会澄清一些事情。是工作代码,还是提案?
-
python2.7 解释器对你的类
ExampleError执行逻辑not,其计算结果为布尔值False,当你将False传递给except时,它似乎是无操作,否则理论上它将处理用户在 try 块中引发False的情况。如果您能够找到一种方法让 pythonFalse扩展异常,这实际上是可能的。我们需要将这个问题升级到 Guido,标题为:“对不起,这他妈的是什么?” Python 鸭子打字再次以惊人的左戳击打。战俘! -
@EricLeschinski 实际上并不确定,但似乎您只能在 Python 2 中引发
BaseException或旧式类的子类型。我试图触发它,除了在类中重新定义__eq__块在给出False时返回True但它不起作用,但Python 是Python 可能有办法进入该块。
标签: python python-2.7 exception try-catch