2013年4月20日土曜日

開発環境

『初めての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 コメント:

コメントを投稿