以下の内容はhttps://pydocument.hatenablog.com/entry/2023/03/19/233628より取得しました。


Python の例外処理: エラーハンドリングの基本と実践

Python は、プログラム実行中に発生するエラーを適切に処理するための例外処理機能を備えています。例外処理は、プログラムの安定性と信頼性を向上させるために不可欠です。この記事では、Python での例外処理の基本的な考え方、文法、実践的な使い方について解説します。

例外処理の基本: tryexcept

Python の例外処理は、tryexcept ブロックを使用して実装します。

  1. try ブロック: エラーが発生する可能性のあるコードを記述します。
  2. except ブロック: try ブロック内でエラーが発生した場合に実行されるコードを記述します。

基本的な構文は以下の通りです。

try:
    # エラーが発生する可能性のあるコード
    pass  # 何らかの処理
except ExceptionType as e:
    # 例外発生時の処理
    print(f"エラーが発生しました: {e}")
  • ExceptionType には、キャッチしたい例外の種類を指定します。
  • as e の部分は省略可能です。エラーオブジェクトを変数 e に格納し、エラーメッセージなどを参照できます。
  • ExceptionType を省略すると、すべての例外をキャッチしますが、推奨されません。特定の例外を処理することが、より適切なエラーハンドリングに繋がります。

具体的な例外処理の例: ZeroDivisionError

数値をゼロで割ると ZeroDivisionError が発生します。ここでは 発生したZeroDivisionErrorexcept ブロックでキャッチし、エラーメッセージを表示しています。

try:
    result = 10 / 0  # ゼロ除算
except ZeroDivisionError as e:
    print(f"エラー: {e}")

複数の例外の処理

複数の例外をまとめて処理するには、except ブロックで例外の種類をタプルで指定します。

例えば以下の、コードではint("abc")ValueErrorが発生し、10 / "5"TypeError が発生する可能性があります。 except ブロックでこれらの例外をまとめて処理します。

try:
    # 例1: 文字列を整数に変換しようとする
    value = int("abc")
    # 例2: 整数を文字列で割ろうとする
    result = 10 / "5"
except (ValueError, TypeError) as e:
    print(f"エラー: {e}")

elsefinally ブロックの使用

  • else ブロック: try ブロックで例外が発生しなかった場合に実行されます。
  • finally ブロック: 例外の有無に関わらず、最後に必ず実行されます。リソースの解放などに利用します。

以下の例では、ユーザーからの入力を整数に変換しようとします。入力が数字でない場合ValueErrorが発生します。 例外が発生しなければ、else ブロックで入力された数字します。finally ブロックは、例外の有無に関わらず、最後に必ず実行されます。

try:
    num = int(input("数字を入力してください: "))
except ValueError:
    print("エラー: 無効な入力です。")
else:
    print(f"入力された数字は {num} です。")
finally:
    print("処理を終了します。")

よく使われる組み込み例外

組み込み例外は、Python にあらかじめ定義されている例外クラスです。これらの例外は、プログラムの実行中に発生する可能性のある一般的なエラーを表します。 組み込み例外を使用することで、エラーの種類に応じた適切な処理を記述できます。よく使われる組み込み例外は以下の表の通りです。

例外 説明
Exception ほとんどの組み込み例外の基底クラス。
ZeroDivisionError ゼロで除算を行った場合に発生。
ValueError 不適切な型の値を関数に渡した場合などに発生 (例: int("abc"))。
TypeError 型が不適切な演算を行った場合に発生 (例: 10 / "5")。
FileNotFoundError ファイルが存在しない場合に発生。
IndexError リストなどのシーケンスで範囲外のインデックスにアクセスした場合に発生。
KeyError 辞書に存在しないキーを指定した場合に発生。



以上の内容はhttps://pydocument.hatenablog.com/entry/2023/03/19/233628より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14