Python の try except
ここでは Python の try - except 文の使い方についてご説明します。
Python のエラーと try 文
Python のプログラムの実行時にエラー(例外)が起こった時には、プログラムの実行は通常そこでストップされ、エラーメッセージが出力されます。
Python では try 文を使って、エラーが起こった時にプログラムを終了せず、その時に実行するコード(例外処理)やクリーンアップの為のコードを指定することができます。
try 文とその後に続けられる節には次のようなものがあります。
- try: エラーが起こるかもしれないコードブロック
- except: エラーが起こった時に実行したいコードブロック
- else: エラーが全く起こらなかった時に実行したいコードブロック
- finally: エラーが起こっても起こらなくても最後に実行したいコードブロック
except については、例外の種類を指定したり、例外の内容を取得したりできるので、後ほど詳しく説明します。
Python の try - except 文の使い方
例えば、次のように数字を 0 で割り算をしようとするとエラーになります。
value1 = 0
value2 = 1
print(value2 / value1)
上のコードを実行すると、エラーが起こった場所や、ZeroDivisionError: division by zero というエラーメッセージが出力されます。
try - except を使って、次のように例外処理をすることができます。
try:
value1 = 0
value2 = 1
print(value2 / value1)
except:
print("Error!")
実行結果は次の通りです。 エラーが起こってもプログラムが終了せずに、except で指定したコードが実行され、Error! という文字が出力されます。
Error!
Python の except 節で例外の種類を指定する
Python の except 節では、次のように例外の種類を指定して、別々の例外処理を実行することができます。
except [例外の種類]:
例えば、ValueError と ZeroDivisionError とそれ以外で、例外処理のコードを分けたい時には次のようにできます。
try:
value1 = 0
value2 = 1
print(value2 / value1)
except ValueError:
print("ValueError!")
except ZeroDivisionError:
print("ZeroDivisionError!")
except:
print("Error!")
実行結果は次のようになり、ZeroDivisionError が起こったので、except ZeroDivisionError: で指定したコードが実行されています。
ZeroDivisionError!
Python の except 節で例外の内容を取得する
Python の except 節で as キーワードを指定して、次のようにして例外の内容を取得することができます。
try:
value1 = 0
value2 = 1
print(value2 / value1)
except Exception as e:
print(e)
実行結果は次のようになります。
division by zero
Python の else と finally 節の使い方
else 節では try のコードブロックで例外が起きなかった時に実行されるコードブロックを指定でき、finally 節では例外が起きても起きなくても実行されるコードブロックを指定できます。
最初のコードに else と finally を追加して実行してみます。
try:
value1 = 0
value2 = 1
print(value2 / value1)
except:
print("Error!")
else:
print("No Error!")
finally:
print("Done!")
実行結果は次のようになり、except と finally のコードブロックが実行されています。
Error!
Done!
エラーが出ないように value1 を 2 に変更して次のコードを実行してみましょう。
try:
value1 = 2
value2 = 1
print(value2 / value1)
except:
print("Error!")
else:
print("No Error!")
finally:
print("Done!")
実行結果は次のようになり、else と finally のコードブロックが実行されていますね。
0.5
No Error!
Done!
finally は開いていたファイルをクローズしたり、クリーンアップのコード書くのに便利です。
以上、Python の try - except 文の使い方についてご説明しました。