在下面的代码中
>>> try:
... a = 12 / 0
... except Exception as e:
... print(e)
...
division by zero
>>>
谷歌表示,as
关键字用于创建别名
那么为什么下面的代码不起作用呢?
>>> try:
... a = 12 / 0
... except Exception:
... print(Exception)
...
<class 'Exception'>
>>>
根据一些来源,它创建了一个Exception
类的对象。
那么为什么下面的代码什么都不打印呢?
>>> try:
... a = 12 / 0
... except Exception:
... a = Exception()
... print(a)
...
>>>
我的问题是:
如果
as
关键字充当别名,为什么第二个示例不起作用(它没有打印错误,而是打印对Exception
类的引用(?如果
as
关键字创建了Exception
类的对象,为什么第三个示例不起作用(它没有打印错误,而是没有打印任何内容(?
您误读了引用。as
关键字用于创建别名,但仅在import
语句中使用。它与except
的意义完全不同。在这种情况下,它只声明一个将保存异常对象的变量。如果说except Exception as e
,那么e
将是类型为Exception
的对象。
在你的最后一个例子中:
try:
a = 12/0
except Exception:
a = Exception()
print(a)
您没有捕获引发的异常。相反,您正在创建一个全新的Exception选项。这样的对象还没有包含异常,因此没有打印任何内容。如果您想要捕获的异常,则必须使用as
子句。