在使用 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中文网其他相关文章!