使用“除无”之外是否有任何意外的副作用?我期望的行为是,一些小的测试似乎证实了该条款没有任何内容。
以下是我想要做的大致概述。如果没有为函数提供参数,则exceptions = None,这将创建“除None”子句。只是想仔细检查一下,我不会发现意想不到的事情。
# exceptions is exception or set of exceptions I want to do special processing for
def check_exceptions(exceptions=None)
try:
...
except exceptions as e:
...
答案 0 :(得分:8)
在这里工作正常(在Python 2.x下)。
>>> try:
... foo
... except None as e:
... pass
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'foo' is not defined
对于带有表达式的except子句,将计算该表达式,如果结果对象与异常“兼容”,则子句匹配异常。如果对象是异常对象的类或基类,或者包含与异常兼容的项的元组,则该对象与异常兼容。
因此,表达式不会将作为异常类型,它将无法匹配。
此行为在Python 3.x中已更改,except
之后的表达式必须是BaseException
的后代或其元组。
答案 1 :(得分:0)
def check_exceptions(exceptions=())
try:
...
except exceptions as e:
...