ホームページ >バックエンド開発 >Python チュートリアル >Python での裸の「excel」句はなぜ悪い習慣とみなされますか?

Python での裸の「excel」句はなぜ悪い習慣とみなされますか?

DDD
DDDオリジナル
2024-12-14 10:10:16911ブラウズ

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 生成エラーなどの例外は、この方法で処理すべきではありません。

コードで処理できるように準備されている例外のタイプを明示的に指定することをお勧めします。 、少なくとも「Exception」、すべての「通常の」例外の基礎クラスです。

より適切なアプローチ

エラー「例外」ブロックは、事前定義された障害シナリオからの回復に使用することを目的としています。ただし、未知の障害シナリオから完全に回復することは一般に不可能です。このような場合、プログラムを続行するのではなく、プログラムを終了することをお勧めします。これは、例外が処理されない場合の Python インタープリタのデフォルトの動作です。

対処方法がわかっている例外のみをトラップすることが賢明です。残りの例外は、別のコンポーネントが処理できることを期待して、呼び出しスタックの上に伝播できるようにする必要があります。画像の存在を確認する場合、予期されるエラー (ドキュメントごとに) は pyautogui.ImageNotFoundException です。

改訂されたコード

前述の洞察に基づいて、関数をリファクタリングして、提起された懸念に対処できます。裸の '例外' によって:

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

関数が意図する特定の例外を指定することによってハンドルを使用すると、コードの信頼性と保守性が向上します。

以上がPython での裸の「excel」句はなぜ悪い習慣とみなされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。