Python Try Except
1. Python 例外処理 (Try...Except)
try ブロックを使用すると、コードブロック内でエラーが発生するかどうかをテストできます。
except ブロックを使用すると、発生したエラーをハンドリング(処理)できます。
else ブロックを使用すると、エラーが発生しなかった場合にのみコードを実行できます。
finally ブロックを使用すると、try および except ブロックの結果に関わらず、コードを実行できます。
2. 例外のハンドリング
エラーが発生した場合、通常 Python は実行を停止し、エラーメッセージを生成します。これを「例外をスローする(throwing an exception)」と呼びます。
これらの例外は try ステートメントを使用して処理できます。
1.1 コード例
x が定義されていない場合、try ブロックはエラーを生成し、except ブロックが実行されます。
try:
print(x)
except:
print("例外が発生しました")try ブロックがない場合、変数が定義されていないとプログラムはクラッシュし、エラーをスローします。
1.2 コード例(tryなし)
このコードはエラーを引き起こします。
print(x)3. 複数の例外
必要な数だけ例外ブロック(except ブロック)を定義できます。例えば、特定の種類の例外に対して特別な処理を実行したい場合などです。
2.1 コード例
NameError 用の特別なメッセージを出力し、それ以外のエラーには別のメッセージを出力します。
try:
print(x)
except NameError:
print("変数 x が定義されていません")
except:
print("それ以外の何らかのエラーが発生しました")4. Else
else キーワードを使用すると、エラーが発生しなかった場合に実行するコードブロックを定義できます。
3.1 コード例
この例では、try ブロック内でエラーが発生しなかったため、else ブロックが実行されます。
try:
print("Hello")
except:
print("エラーが発生しました")
else:
print("何もエラーは発生しませんでした")5. Finally
finally ブロックは、try ブロックでエラーが発生したかどうかにかかわらず実行されます。
4.1 コード例
try:
print(x)
except:
print("例外が発生しました")
finally:
print("'try...except' 処理が完了しました")これは、開いているファイルやオブジェクト(データベースコネクションなど)をクリーンアップして閉じる際に非常に役立ちます。
4.2 コード例
書き込み権限のないファイルを書き込みモードで開こうとした場合でも、最後にファイルを閉じようとする処理を記述できます。
try:
f = open("demofile.txt")
try:
f.write("Lorum Ipsum")
except:
print("ファイルへの書き込み中に問題が発生しました")
finally:
f.close()
except:
print("ファイルを開く際に問題が発生しました")この場合、ファイルへの書き込みに失敗しても、プログラムは続行され、ファイルオブジェクトは適切に閉じられます。
6. 例外を発生させる (Raise)
Python 開発者は、特定の条件が発生した場合に例外をスロー(発生)させることを選択できます。
例外をスローするには、raise キーワードを使用します。
5.1 コード例
変数が 0 未満の場合にエラーを発生させ、プログラムを停止させます。
x = -1
if x < 0:
raise Exception("申し訳ありませんが、数値は0より大きくある必要があります")raise キーワードは、発生させる例外の種類を指定するために使用され、ユーザーに表示するテキストを定義することもできます。
5.2 コード例
x が整数でない場合に TypeError を発生させます。
x = "hello"
if not type(x) is int:
raise TypeError("整数のみが許可されています")