Python除了None

Ben*_*Ben 9 python

使用"除无"之外是否有任何意想不到的副作用?我期望的行为是,一些小的测试似乎证实了该条款不会捕获任何内容.

这是我想要做的大致概述.如果没有为函数提供参数,则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:                                                       
    ...                                                                 
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 10

在这里工作正常(在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
Run Code Online (Sandbox Code Playgroud)

对于带有表达式的except子句,将计算该表达式,如果结果对象与异常"兼容",则子句匹配该异常.如果对象是异常对象的类或基类,或者包含与异常兼容的项的元组,则该对象与异常兼容.

资源

因此,表达不是一个异常类型,它只会失败永远匹配.

此行为在Python 3.x中已更改,并且后面的表达式except必须是BaseException此类的后代或元组.