Python: 例外処理の書き方(try-except文)
Pythonでの例外処理の書き方を解説します。
例外処理の構文は「try-except文」とも呼ばれ、基本的な書き方は下の通りです。
例外が発生した時の処理、
例外が発生しなかった時の処理、
必ず最後に行う処理など細かく記述できます。
それぞれの処理部分はブロックとしてインデント(字下げ)する必要があります。
try: 例外が発生する可能性のある処理(tryブロック) except 例外クラス名: 例外が発生したときの処理(exceptブロック) else: 例外が発生しなかったときの処理(elseブロック) finally: 必ず最後にする処理(finallyブロック)
try, except, else, finallyの文末にコロン(:)を付け忘れないようにしてください。
最低限必要なのは tryと exceptの部分です。else と finallyの部分は省略可能です。
(関連記事:最もシンプルな例外処理)
except の後に例外クラス名を指定しない場合は、 すべての例外の発生を処理できます。
exceptブロックを複数記述する
except ブロックはエラーの種類に応じて複数記述できます。 例えば、ファイルを扱う場合の例外処理を分けることもできます。
次のコードではファイルが存在しない場合の「FileNotFound」エラーと、 すでに存在するファイルを作成しようとした場合の「FileExistsError」を 別々のブロックに分けています。
except FileNotFound: 処理 except FileExistsError: 処理
「FileNotFound」や「FileExistsError」
のようなPythonにあらかじめ組み込まれている例外クラスのことを
組み込み例外と言います。
(関連記事:Python: 組み込み例外)
複数の例外を1つのブロックにまとめる
複数の例外を1つのブロックにまとめることもできます。 その場合は()丸括弧で括り、カンマで区切ります。
except (FileNotFound, FileExistsError): 処理
エラー情報を出力する
例外の情報を出力する場合は、次のように例外クラス名の後に as 変数と記述すると、 変数を使った情報出力ができます。
except Exception as e: print(e) #エラー情報出力
上で指定している「Exception」はシステム終了以外のエラーを全て拾ってくれます。 想定外のエラーを拾いたい場合は exceptの後に「Exception」を指定して、 エラー情報を出力するとデバッグに役立ちます。