1. ホーム
  2. python

裸の「except」を使って何が悪い?[重複】について]

2023-09-15 23:07:43

質問

PyAutoGuiを使って、画面に画像が表示されているかどうかを確認する関数を作ってみたところ、こんな感じになりました。

def check_image_on_screen(image):
    try:
        pyautogui.locateCenterOnScreen(image)
        return True
    except:
        return False

で、問題なく動作するのですが、PyCharmが except をむき出しにするように言われました。このままにしておくと何が問題なのでしょうか?同じ関数を作るのにもっと適切な方法があるのでしょうか?

どのように解決するのですか?

except は、ほとんど確実に捕えたくない例外を捕えます。 KeyboardInterrupt (ユーザが Ctrl+C を押したとき) や、Python が発生させた SystemExit

期待する特定の例外がない場合、少なくとも except Exception これはすべての "通常" の例外のための基本型です。


とは言うものの、あなたは except ブロックは、既知の障害状態から回復するために使用します。未知の障害状態は通常回復不可能であり、それは 適切な動作 であり、Pythonインタプリタがキャッチされない例外で自然に終了するものです。

処理する方法を知っているものはすべてキャッチし、残りは他の何かがそれを処理できるかどうかを確認するためにコールスタックを伝搬させます。この場合、あなたが期待しているエラーは ( docs によって) 期待しているエラーは pyautogui.ImageNotFoundException