在第二个中,您可以访问异常对象的属性:
>>> def catch():
... try:
... asd()
... except Exception as e:
... print e.message, e.args
...
>>> catch()
global name 'asd' is not defined ("global name 'asd' is not defined",)
但是它不会捕获BaseException
或系统退出异常SystemExit
,KeyboardInterrupt
并且GeneratorExit
:
>>> def catch():
... try:
... raise BaseException()
... except Exception as e:
... print e.message, e.args
...
>>> catch()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in catch
BaseException
除了一个裸露的:
>>> def catch():
... try:
... raise BaseException()
... except:
... pass
...
>>> catch()
>>>