開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
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:
- すべてクラス例外で、BaseException(ユーザー定義の場合はさらにBaseExceptionのサブクラスのExcpetionクラス)のサブクラスである。
- 指定したクラスのサブクラスから順にマッチしていく。
-
- コンストラクタの引数に渡す。
- classの定義でインスタンス変数を定義する。
-
- コンストラクタの引数に文字列を渡す。
- classの定義で__str__メソッドをオーバーロードする。
- 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 コメント:
コメントを投稿