现在,我在except Exception:
子句中捕获了异常,并执行print(exception)
。由于始终打印<class 'Exception'>
,因此结果不提供任何信息。我知道这曾经在python 2中起作用,但是我如何在python3中做到这一点?
最佳答案
我猜您需要将Exception
分配给一个变量。作为shown in the Python 3 tutorial:
def fails():
x = 1 / 0
try:
fails()
except Exception as ex:
print(ex)
为了简要说明,
as
是在某些复合语句中使用的伪分配关键字,用于将前面的语句分配或别名给变量。在这种情况下,
as
将捕获的异常分配给一个变量,以允许有关该异常的信息在以后存储和使用,而不需要立即进行处理。 (这在Python 3 Language Reference: The try
Statement中进行了详细讨论。)另一个使用
as
的复合语句是with
语句:@contextmanager
def opening(filename):
f = open(filename)
try:
yield f
finally:
f.close()
with opening(filename) as f:
# ...read data from f...
在这里,
with
语句用于使用context managers定义的方法来包装块的执行。它的功能类似于纯净的生成器包中的扩展try...except...finally
语句,并且as
语句将上下文管理器中生成器生成的结果分配给变量以供扩展使用。(这在Python 3 Language Reference: The
with
Statement中进行了详细讨论。)最后,在导入模块时可以使用
as
,以将模块别名为另一个(通常较短)的名称:import foo.bar.baz as fbb
在Python 3 Language Reference: The
import
Statement中对此进行了详细讨论。