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 文の使い方についてご説明しました。

© 2024 やさしい Python 入門