python例外の完全なキャプチャ方法
プログラムを書くときに異常に遭遇した場合、以下の処理を行いたい場合は、私が以下に書いた異常処理の方法を参考にしてください.
次のプログラムがあるとします.
try:
文1
文2
.
文N
except .........:
print .......
しかし、「文1~文N」が実行中にどのような異常が発生するかはわかりませんが、異常処理を行い、発生した異常を印刷したいので、プログラムの実行を停止しません.
だから「except......」この文はどのように書くべきですか.
少なくとも3つの方法:
方法1:すべての例外をキャプチャする
そうだなprint_exc()画面に印刷された情報をテキストファイルに保存
次のプログラムがあるとします.
try:
文1
文2
.
文N
except .........:
print .......
しかし、「文1~文N」が実行中にどのような異常が発生するかはわかりませんが、異常処理を行い、発生した異常を印刷したいので、プログラムの実行を停止しません.
だから「except......」この文はどのように書くべきですか.
少なくとも3つの方法:
方法1:すべての例外をキャプチャする
try:
a=b
b=c
except Exception,ex:
print Exception,":",ex
方法2:tracebackモジュールを用いて異常を表示するimport traceback
try:
a=b
b=c
except:
traceback.print_exc()
方法3:sysモジュールを用いて最後の異常を遡及するimport sys
try:
a=b
b=c
except:
info=sys.exc_info()
print info[0],":",info[1]
ただし、これらの例外をログ・ファイルに保存して、これらの例外を分析したい場合は、次の方法を参照してください.そうだなprint_exc()画面に印刷された情報をテキストファイルに保存
try:
a=b
b=c
except:
f=open("c:log.txt",'a')
traceback.print_exc(file=f)
f.flush()
f.close()