Pythonのtry exceptは例外処理
try exceptは、pythonが出力する「ナマのエラーメッセージ」を抑制し、エラー発生時にはユーザが「例外処理」として用意したものを代わりに実行します。エラーを無視して処理を継続することも可能です。
Pythonのtry exceptの使い方
try exceptブロックは、Pythonプログラムにおける例外処理を行うためのものです。例外(エラー)が発生した場合に、プログラムの実行を中断せずに処理を継続できます。
```python try: 文 except 例外名: 例外が発生した時に実行される文 ```
実行するとこうなります。0除算したのにナマのエラーメッセージが出ることなく、指定した処理(printでメッセージを表示)が実行されています。
``` >>> a = 4 >>> b = 0 >>> try: ... ans = a / b ... except ZeroDivisionError: ... print('0で割ることはできません') ... 0で割ることはできません ```
関連 Pythonのprint
try exceptのelse
try except elseブロックは、例外が発生しなかった場合に実行する処理を指定することができます。
```python try: 文 except 例外名: 例外が発生した時に実行される文 else: 例外が発生しなかった時に実行される文 ```
実行するとこうなります。
``` >>> a = 4 >>> b = 2 >>> try: ... ans = a / b ... except ZeroDivisionError: ... print('0で割ることはできません') ... else: ... print('計算結果は' + str(ans) + 'です') ... 計算結果は2.0です ```
try exceptのfinallyブロック
try except finallyブロックは、例外処理の終了後に必ず実行される処理を指定することができます。
```python try: 文 except 例外名: 例外が発生した時に実行される文 finally: try exceptブロックの終了後に実行される文 ```
実行するとこうなります。
``` >>> a = 4 >>> b = 0 >>> try: ... ans = a / b ... except ZeroDivisionError: ... print('0で割ることはできません') ... finally: ... print('処理が終了しました') ... 0で割ることはできません 処理が終了しました ```
try exceptのpassってなに?
try exceptでよく使われる passブロックは、例外処理の本体がない場合に例外を受け取り、何もしないという処理を指定することができます。
```python try: 文 except 例外名: pass ```
実行するとこうなります。
``` >>> a = 4 >>> b = 0 >>> try: ... ans = a / b ... except ZeroDivisionError: ... pass ... >>> ```
「エラーが発生しても、何も処理しない」といった動作をさせたいときなどに使います。
try exceptのエラー内容を取得する
try exceptで発生したエラー内容を取得するには、例外名の後にasをつけて引数を指定します。詳細なエラー内容を取得することができます。
デバッグなどで、「生(ナマ)で発生したエラーは何なんだろう?」ということを知りたいときに便利。
```python try: 文 except 例外名 as エラー変数: エラー変数の内容を使って処理を行う文 ```
実行するとこうなります。
``` >>> a = 4 >>> b = 0 >>> try: ... ans = a / b ... except ZeroDivisionError as e: ... print(e) ... division by zero ```
pythonが出力するナマのエラーが「division by zero」というわけですね。
try exceptで、tracebackを使う
特定のエラーが発生した場合に、エラーの詳細を表示させるためのものです。tracebackモジュールを使用して、例外の発生源と発生した処理を表示させることができます。エラーが発生した箇所と、それをコールした関数などをトレースできるんですね。
エラーメッセージだけでは発生原因がわからなくて、呼び出し元の関数を遡って調べたい…というときに便利です。
```python try: 文 except 例外名: import traceback traceback.print_exc() ```
実行するとこうなります。
``` >>> a = 4 >>> b = 0 >>> try: ... ans = a / b ... except ZeroDivisionError: ... import traceback ... traceback.print_exc() ... Traceback (most recent call last): File "<stdin>", line 3, in <module> ZeroDivisionError: division by zero ```
Pythonのtry exceptのまとめ
- Pythonのtry exceptは、プログラムの例外処理を行う
- try exceptでは、elseやfinallyなどのブロックを使用して、条件分岐を記述できます。
- try exceptのエラー内容やtracebackを表示、取得することができます。