Python Try/Except とエラー処理

Python スクリプトがクラッシュしないようにします。 try、excel、finally ブロックと、カスタム例外を適切に発生させる方法について学びます。

エディターで試してみる

概要

現実のプログラミングの世界では、エラーは完全に避けられません。ファイルが削除されたり、ネットワーク接続が切断されたり、スクリプトが数字を期待しているときにユーザーが文字を入力したりする可能性があります。安全策を講じずにこれらのシナリオが発生すると、Python は実行を停止し、例外 (実行時エラー) をスローして、プログラム全体をクラッシュさせます。エラー処理は、これらの障害を適切に予測して管理する技術です。

Python のエラー管理の基礎は、`try` および `excel` ブロック構造です。潜在的に危険なコードを「try」ブロック内に配置します。 Python はそれを実行しようとします。エラーが発生した場合、Python はクラッシュするのではなく、例外をインターセプトし、すぐにジャンプして「excel」ブロック内に含まれるコードを実行します。これにより、プログラムが回復し、分かりやすいエラー メッセージが表示され、実行を継続できるようになります。

包括的な「例外:」ブロックを記述するのではなく、特定の対象を絞った例外をキャッチすることが重要なベスト プラクティスです。たとえば、`FileNotFoundError` または `ValueError` を明示的にキャッチすると、本当に知る必要がある無関係のバグ (構文エラーなど) を誤ってマスクするのではなく、予期した正確な問題を確実に処理できるようになります。

Python にはオプションの `else` ブロックも用意されており、これは `try` ブロックがエラーを発生させることなく完全に正常に完了した場合にのみ実行されます。ここは、危険な作戦の成功に絶対に依存するロジックを配置するのに最適な場所です。さらに、「finally」ブロックは、エラーが発生したかどうかに関係なく、何が起こってもコードを実行する方法を提供します。 「finally」ブロックは、データベース接続の終了やファイル ロックの解放などのクリーンアップ アクションに不可欠です。

Python では、エラーをキャッチするだけでなく、開発者が「raise」キーワードを使用してエラーを明示的にトリガーすることもできます。例外を発生させると、ロジックに厳密な制約を適用し、アプリケーションの状態が破壊される前に無効なデータを拒否することができます。 Python の基本「Exception」クラスを継承するカスタム例外クラスを定義することにより、開発者は大規模なエンタープライズ アプリケーション向けに高度にドメイン固有のエラー階層を作成できます。

コードと実行の出力

潜在的に危険なファイル構造または存在しないファイル構造を操作するときに構造的な安全性を確保します。

def divide_numbers(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "Error: Cannot divide by zero!"
    except TypeError:
        return "Error: Both arguments must be numbers."
    else:
        return f"The result is {result}"
    finally:
        print("Execution completed.")

print(divide_numbers(10, 2))
print(divide_numbers(10, 0))
端子出力
Execution completed.
The result is 5.0
Execution completed.
Error: Cannot divide by zero!

段階的な実装

  • ユーザーフォームの送信を検証する
  • ネットワークリクエストがタイムアウト時にクラッシュしないようにする
  • Finally ブロックでデータベース接続を安全に閉じる

よくある質問

「上げる」というキーワードは何ですか?

raise キーワードは、意図的に例外を発生させるために使用されます。どのような種類のエラーを発生させるか、およびユーザーに出力するテキストを定義できます。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。