首页 > 后端开发 > Python教程 > 为什么 Python 中的' except ”子句被认为是不好的做法?

为什么 Python 中的' except ”子句被认为是不好的做法?

DDD
发布: 2024-12-14 10:10:16
原创
910 人浏览过

Why is a Bare `except` Clause in Python Considered Bad Practice?

裸“例外”的危险

在使用 PyAutoGui 设计一个函数来验证屏幕上图像是否存在时,您采用了以下方法:

def check_image_on_screen(image):
    try:
        pyautogui.locateCenterOnScreen(image)
        return True
    except:
        return False
登录后复制

虽然此函数看起来按预期运行,但 PyCharm 将裸露的“例外”标记为不可取。这引起了人们对不加修饰的“例外”的影响的担忧。

裸“例外”的问题

裸露“例外”不加区别地拦截所有异常,甚至是那些未预期或理想的。诸如 KeyboardInterrupt (Ctrl C) 之类的异常和诸如 SystemExit 之类的 Python 生成的错误都不应该以这种方式处理。

最好显式指定代码准备处理的异常类型,至少是“异常”,所有“常规”异常的基础类。

更合适的方法

错误“例外”块旨在用于从预定义的故障场景中恢复。然而,通常不可能从未知的故障场景中完全恢复。在这种情况下,最好终止程序而不是尝试继续。这是 Python 解释器在未处理异常时的默认行为。

仅捕获您知道如何解决的异常是明智的做法。应允许剩余的异常在调用堆栈中向上传播,希望另一个组件可以处理它们。在验证图像存在的情况下,预期错误(根据文档)是 pyautogui.ImageNotFoundException。

修订的代码

根据上述见解,可以重构您的函数以解决提出的问题通过裸露的“例外”:

def check_image_on_screen(image):
    try:
        pyautogui.locateCenterOnScreen(image)
        return True
    except pyautogui.ImageNotFoundException:
        return False
登录后复制

通过指定函数要处理的特定异常,您可以改进代码的可靠性和可维护性。

以上是为什么 Python 中的' except ”子句被认为是不好的做法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板