2014年5月15日木曜日

開発環境

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

その他参考書籍

Test Your Knowledge:

  1. 例外を捕捉する。
    1. try/except
    2. try/finally
  2. 例外を発生させる。
  3. テスト用。
  4. 自動的に開始、終了する。

コード(BBEdit)

sample.py

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

try:
    print('start try')
    raise TypeError('raise TypeError')
    print('end try')
except Exception as err:
    print(type(err), err, err.args)
finally:
    print('finally')

assert True

try:
    assert False, 'assert data'
except Exception as err:
    print(type(err), err, err.args)

class A:
    def __enter__(self):
        print('enter')
    def __exit__(self, exec_type, exec_value, exec_tb):
        print('exit', exec_type, exec_value, exec_tb)

with A() as a:
    print('with/as statement')

with A() as a:
    raise Exception("with/as statement2")

入出力結果(Terminal)

$ ./sample.py
start try
<class 'TypeError'> raise TypeError ('raise TypeError',)
finally
<class 'AssertionError'> assert data ('assert data',)
enter
with/as statement
exit None None None
enter
exit <class 'Exception'> with/as statement2 <traceback object at 0x10ab7f848>
Traceback (most recent call last):
  File "./sample.py", line 30, in <module>
    raise Exception("with/as statement2")
Exception: with/as statement2
$

0 コメント:

コメントを投稿