例外処理 †
- exception.py
#!/usr/bin/env python
# coding: utf-8
import sys
import traceback
number = int(sys.argv[1])
try:
print('----- try節')
if number % 3 == 0 :
raise ValueError(str(number) + ' はアホです')
except ValueError as err :
# 例外処理
print('----- except節')
print('ERROR = ' + str(err))
err_type, err_val, err_trace = sys.exc_info()
print('ERROR TYPE = ' + str(err_type))
print('ERROR VAL = ' + str(err_val))
print('TRACE BACK = ' + str(traceback.format_tb(err_trace)))
else:
# 例外が起きなかった時の処理
print('----- else節')
finally:
# 例外が起きようが、起きまいが実行される処理
print('----- finally節')
- 実行結果
$ ./exception.py 1
----- try節
----- else節
----- finally節
$ ./exception.py 2
----- try節
----- else節
----- finally節
$ ./exception.py 3
----- try節
----- except節
ERROR = 3 はアホです
ERROR TYPE = <class 'ValueError'>
ERROR VAL = 3 はアホです
TRACE BACK = [' File "./exception.py", line 12, in <module>\n raise ValueError(str(number) + \' はアホです\')\n']
----- finally節
- except : 例外処理
- else : except に入らなかったとき実行
- finally : 例外が発生しようがしまいが実行
独自の例外 †
>>> class MyException (Exception) : pass
>>> raise MyException('おれさま例外')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
raise MyException('おれさま例外')
MyException: おれさま例外
組み込みの例外クラス †
Python