Python2覚書 例外処理

try,catch構文

例外が発生した場合の処理は、try,catchを使います。
例外の種類にかかわらず一括処理を行う場合

try:
    print 1/0
except:
    print "error"
else:
    print "OK"

error
例外の種類に応じて処理を変える場合
sysモジュールで定義されている例外オブジェクトを利用します。

import sys
try:
    list = [0 , 1, 2]
    print list[5]
    print 1/0
except ZeroDivisionError:
    print "error: zero division"
except IndexError:
    print "error: out of range"   
else:

error: out of range

finally文

tryで例外が発生したとしても続けて処理を行いたい場合は、finally文の中にその処理を書きます。

import sys
try:
    print 1/0
except ZeroDivisionError:
    print "error: zero division"
finally:
    print "finally"


error: zero division
finally

例外クラスの引数

受け取った例外を引数として利用する場合は、exceptionの後に続けて記述します。

except exception,arg:

raise文

例外を発生させるにはraise文を用います。

try:
    raise NameErro
except NameError:
    print "no name variable or function"

例外クラスの定義

例外クラスを継承してユーザー定義の例外を作ることができます。

class myError(RuntimeError):
    def __init__(self, att):
        self.att = att

try:
   raise myError("my error")
except myError,e:
    print e.att  


my error