開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs(Text Editor)
- プログラミング言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のVII部(例外)のまとめ演習3.(エラー処理)を解いてみる。
その他参考書籍
3.(エラー処理)
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
import sys, traceback
class MyError(Exception):
def __init__(self, data, *args):
Exception.__init__(self, data, *args)
print("クラス例外")
def oops():
raise MyError("エラーメッセージ")
def func(x, y, z):
return x + y + z
f = lambda x, y, z, n: (x + y + z) * n
def safe(f, *args):
try:
print(f(*args))
except Exception as err:
print(type(err), err, err.args)
print("ここからsys.exc_info()")
print(sys.exc_info())
print("ここまでsys.exc_info()")
print("ここからtraceback.print_exc()")
traceback.print_exc()
print("ここまでtraceback.print_exc()")
safe(func, 2, 3, 4)
safe(f, 2, 3, 4, 10)
safe(oops)
入出力結果(Terminal)
$ ./sample.py
9
90
クラス例外
<class '__main__.MyError'> エラーメッセージ ('エラーメッセージ',)
ここからsys.exc_info()
(<class '__main__.MyError'>, MyError('エラーメッセージ',), <traceback object at 0x10badf878>)
ここまでsys.exc_info()
ここからtraceback.print_exc()
Traceback (most recent call last):
File "./sample.py", line 21, in safe
print(f(*args))
File "./sample.py", line 12, in oops
raise MyError("エラーメッセージ")
MyError: エラーメッセージ
ここまでtraceback.print_exc()
$
0 コメント:
コメントを投稿