開発環境
- 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 コメント:
コメントを投稿