python - 为什么我们在 Python 3 中需要显式异常链
问题描述
我刚刚了解了 Python 中的异常链接。我看到的是,有两种方式——隐式和显式。如果我不做任何特别的事情并引发异常。Py 将自动保存有关先前异常的信息(如果我正确理解它的__context__
属性)。如果没有捕获第二个异常,我会得到包含两个异常的漂亮堆栈。我也可以使用from
关键字明确地做到这一点。在这种情况下,我看到的唯一区别是,不是使用__context__
Py 而是使用__cause__
. 并且堆栈消息从During handling of the above exception, another exception occurred:
变为The above exception was the direct cause of the following exception:
。那么为什么会有显式异常链呢?如果我什么都不做,我也会得到同样的东西。
解决方案
推荐阅读
- php - 每个循环的 Laravel 都会产生额外的列表
- django - 在 django 中查询?
- delphi - FastMM:如何为所有 unicode 或 ansi 字符串注册预期内存泄漏?
- php - PHP CLI 运行外部程序
- ios - 如何为泛型类及其子类提供协议方法的默认实现?
- html - 如何在两个不同的页面之间链接
- ruby-on-rails - Ruby on Rails - 加载活动记录的记录范围与收集方法
- python - 使用 Cloud Composer 和 Celery Executor 在安全网络中的远程工作人员上运行作业
- firebase - Firebase 动态链接社交信息
- html5-video - 取消静音时 HTML 5 视频播放器不工作