ロゴ

プログラミング初心者がアプリ開発を目指すブログ

【Python入門】例外処理の基本- Python初心者勉強記027

プログラムが処理を行おうとすると例外が発生することがあります。
今回はPythonに例外処理機能の使い方を見ていきましょう。

例外処理の分岐

基本のtry-except文

try-except文での例外処理方法を見ていきましょう。

try:
例外が発生するかもしれない処理
except エラークラス名:
例外発生時の処理

今回は存在しないファイルを開こうとした時の処理を書いてみます。
ファイルを開こうとする時には、IOErrorが発生する可能性があるので、エラークラス名をIOErrorとします。


>>> try:
...     f = open('test.txt','r')
... except IOError:
...     print('エラー、ファイルを開けません')
... 
エラー、ファイルを開けません

なお、エラーの種類に関係なくエラーを捕捉したい場合は、エラークラス名を指定しなくても構いません。
また、複数種類のエラーが発生する場合は、except節を複数個書くこともできます。

try-except-else文

try-except文内でエラーが発生しなかった時のみ、実行したい処理がある場合はelse節を追加します。

try:
例外が発生するかもしれない処理
except: エラークラス名
例外発生時の処理
else:
      例外が発生しなかった時の処理

try-except-else-finally文

try-except文内でエラーが発生したかどうかに関わらず行いたい処理がある場合はfinally節を追加します。ファイルのクローズ処理など、操作の後処理的なものが書かれます。

try:
例外が発生するかもしれない処理
except: エラークラス名
例外発生時の処理
else:
      例外が発生しなかった時の処理
finally:
例外に関わらず行う処理

例外の情報を取得する

>

例外インスタンスの取得

例外情報を詳細に取得したい場合は、例外インスタンスを取得して例外の情報を調べることができます。

except エラークラス as インスタンス: (Python3系)
except エラークラス, インスタンス: (Python2系)


>>> try:
...     f=open('test.txt','r')
... except IOError as instance:
...     print(instance)
... 
[Errno 2] No such file or directory: 'test.txt'

トレースバックの表示

例外がどこでどのように発生したのかを詳しく知りたい場合は、トレースバックを取得します。
トレースバックはsysモジュールのexc_info関数で、エラー情報を取得することができます。


>>> import sys
>>> import traceback
>>> try:
...     f=open('test.txt','r')
... except IOError:
...     error_type,error_value,traceback_=sys.exc_info()#エラー情報の取得
...     tb = traceback.format_tb(traceback_)#エラー情報のフォーマットを整える
...     print(error_type)
...     print(error_value)
...     print(tb)
... 

[Errno 2] No such file or directory: 'test.txt'
['  File "", line 2, in \n']

Python入門講座の次の記事はこちら => 【Python入門】独自の例外を発生させる- Python初心者勉強記028

スポンサード リンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA