使用 Bare ' except' 的危险
在尝试创建一个检测屏幕上图像存在的函数时,开发人员遇到了警告来自 PyCharm 以避免留下“除了”裸露。为了理解这个问题,让我们检查一下提供的函数:
def check_image_on_screen(image): try: pyautogui.locateCenterOnScreen(image) return True except: return False
问题的出现是因为裸露的“ except”块捕获了所有异常,包括那些不应该被抑制的异常。这包括“KeyboardInterrupt”异常(当用户按 Ctrl C 中断执行时)和 Python 引发的错误,例如“SystemExit”。
适当的异常处理
在如果没有特定的预期异常,建议至少捕获“异常”基本类型,它涵盖了所有“常规”异常。但是,在这种情况下,预期错误在“pyautogui”文档中明确声明为“ImageNotFoundException”。更合适的函数将利用此特定异常:
def check_image_on_screen(image): try: pyautogui.locateCenterOnScreen(image) return True except pyautogui.ImageNotFoundException: return False
异常故障处理
请记住,“例外”块旨在从已知的故障状态中恢复。未知的故障通常是不可恢复的,最好允许此类异常沿着调用堆栈向上传播以在其他地方寻求处理。在这种情况下,Python 解释器默认通过优雅地终止程序来处理未捕获的异常。
结论:为了确保稳健的异常处理,请使用“ except”块来捕获已知的故障状态并适当地处理它们。让未知的异常传播,从而允许解释器的默认行为采取相应的行动。
以上是为什么在 Python 错误处理中使用裸露的' except”子句是危险的?的详细内容。更多信息请关注PHP中文网其他相关文章!