2014年5月16日金曜日

開発環境

Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART VII.(Exceptions and Tools)、CHAPTER 35(Exception Objects)、Test Your Knowledge: Quiz 1, 2, 3, 4, 5.を解いてみる。

その他参考書籍

Test Your Knowledge:

  1. すべてクラス例外で、BaseException(ユーザー定義の場合はさらにBaseExceptionのサブクラスのExcpetionクラス)のサブクラスである。
  2. 指定したクラスのサブクラスから順にマッチしていく。
    1. コンストラクタの引数に渡す。
    2. classの定義でインスタンス変数を定義する。
    1. コンストラクタの引数に文字列を渡す。
    2. classの定義で__str__メソッドをオーバーロードする。
  3. python3.xではサポートされないから。

コード(BBEdit)

sample.py

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

class E1(Exception): pass

class E2(Exception):
    def __init__(self, data):
        self.data = data
    def __str__(self):
        return 'MyException'

try:
    raise E1('args1')
except E1 as err:
    import sys
    print(sys.exc_info())
    print(err.args)
    print(err)

try:
    raise E2('args2')
except E2 as err:
    import sys
    print(sys.exc_info())
    print(err.args)
    print(err.data)
    print(err)

入出力結果(Terminal)

$ ./sample.py
(<class '__main__.E1'>, E1('args1',), <traceback object at 0x1032c7808>)
('args1',)
args1
(<class '__main__.E2'>, E2('args2',), <traceback object at 0x1032c7808>)
('args2',)
args2
MyException
$

0 コメント:

コメントを投稿