您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

更好地“尝试”某些东西并捕获异常,或者测试是否有可能首先避免异常?

更好地“尝试”某些东西并捕获异常,或者测试是否有可能首先避免异常?

你应该更喜欢try/exceptif/else如果结果

通常,这些并存。

如果尝试通过以下方式在长列表中查找元素:

try:
    x = my_list[index]
except IndexError:
    x = 'NO_ABC'

index可能在列表中并且通常不引发IndexError时,尝试除外是最好的选择。这样一来,您无需再进行额外的查找if index < len(my_list)

可以使用Dive Into Python中的短语来 。您的示例不仅(优美地)处理异常,而不是让其 通过 ,而且仅在未找到索引的 特殊 情况下才发生 异常 (因此,单词 异常 !)。

Python的官方文档提到了EAFP比起许可更容易获得宽恕Rob Knight指出 可以使代码 简洁,更易于阅读。他的示例如下所示:

更糟 (LBYL“跳前先看”)

#check whether int conversion will raise an error
if not isinstance(s, str) or not s.isdigit():
    return None
elif len(s) > 10:    #too many digits for int conversion
    return None
else:
    return int(s)

更好 (EAFP:寻求宽恕比获得许可更容易)

try:
    return int(s)
except (TypeError, ValueError, OverflowError): #int conversion Failed
    return None
其他 2022/1/1 18:53:09 有457人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶