我刚刚了解了Python中的异常链接。我看到的是,有两种方式-隐性和显性。如果我没有做任何特别的事情并引发异常。 Py将自动保存有关先前异常的信息(如果我正确理解为__context__
属性)。如果没有捕获到第二个异常,我将得到包含两个异常的漂亮堆栈。我也可以使用from
关键字来明确地做到这一点。在这种情况下,我看到的唯一区别是,Py使用__context__
而不是__cause__
。并且堆栈消息从During handling of the above exception, another exception occurred:
变为The above exception was the direct cause of the following exception:
。那么为什么要有显式的异常链接?如果我什么都不做,我会得到同样的东西。