python - 在 Python 中的 try 子句中继续,即使引发了异常
问题描述
即使引发异常,是否有任何方法可以在 try 子句中继续执行代码?
这是代码示例。
outer_margin = 0.125 # Default Amazon
safe_zone = 0.25 # Default Amazon
safe_spine = 0.0625 # Default Amazon
if custom_measure is not None:
if isinstance(custom_measure, dict):
try:
outer_margin = custom_measure["outer_margin"]
safe_zone = custom_measure["safe_zone"]
safe_spine = custom_measure["safe_spine"]
except KeyError as e:
logger.warning("Key {} not found, default value used.".format(e))
这三个值都是可选的,因此键outer_margin
可能不存在,但safe_zone
可能存在。safe_zone
即使调用outer_margin
引发异常,我也想达到。有没有办法在一个 try/except 块中做到这一点?就像是:
# Not valid syntax
try:
outer_margin = custom_measure["outer_margin"]
try:
safe_zone = custom_measure["safe_zone"]
except KeyError as e:
pass
我已经在示例中找到了针对该案例的不同解决方案,但现在我很想知道是否有办法继续执行一个 try/except 块,即使引发异常也是如此。
解决方案
您可以使用dict.get
而不是捕获KeyError
异常。
if isinstance(custom_measure, dict):
outer_margin = custom_measure.get("outer_margin")
safe_zone = custom_measure.get("safe_zone")
safe_spine = custom_measure.get("safe_spine")
如果"outer_margin"
不存在,custom_measure
它将被设置为None
.
您还可以设置其他默认值,而不是None
这样。
outer_margin = custom_measure.get("outer_margin", 0)
推荐阅读
- git - Git 存储库,限制基于路径的读取访问
- next.js - 为什么使用 useRouter 时我的查询参数不存在?下一个
- php - 如何在 php 电子邮件上显示 php 单选输入值?
- html - 如何从 IE 中未完全预加载 VBA 的下拉列表中选择选项?
- javascript - Javascript / CSS 如何使多个具有不同数据的div元素输入到同一个输入表单中
- r - 如何使用 gsub 用特定模式替换整个字符
- c# - C# 中的 AES-ECB 块解密
- javascript - 根据Javascript中的条件阻止代码执行
- ios - 向上推键盘 Swift iOS 后,我的 Scrollview 不会一直向上滚动
- anylogic - 将代理发送到另一个队列服务点