2012年3月2日金曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のVII部(例外)27章(例外の基礎)練習問題を解いてみる。

1.

tryステートメントはそのブロックで例外が発生した場合、それを捕捉する。

2.

tryステートメントには、

  • try/except/else
  • try/finally

の種類がある。

3.

raiseステートメントは例外を恋に発生させる機能がある。

4.

assertステートメントは特定の条件が満たされなかった場合にのみ例外を発生させる機能をもつ。

同様のことは、raiseステートメントとifステートメントを使うことできる。

5.

with/asステートメントは、処理の過程で例外が発生した、しないに関係なく、前処理と後処理に対応することができ、オブジェクトベースのプロトコルをサポートしているという機能がある。

前処理が必要ないなら、try/finallyステートメントで似たようなことができる。

いろいろと使ってみる。

入出力結果(対話型コマンドライン、Terminal)

$ python
Python 2.7.2 (default, Feb 12 2012, 23:50:38) 
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def f(x,y):
...     return x/y
... 
>>> class Bad:pass
... 
>>> try:
...     raise Bad()
... except Bad:
...     print 'got Bad'
... 
got Bad
>>> f(1,0)
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 2, in f
ZeroDivisionError: integer division or modulo by zero
>>> try:
...     f(1,0)
... except ZeroDivisionError:
...     print 'got it'
... 
got it
>>> try:
...     n=f(10,5)
... except:
...     print 'got it'
... else:
...     print n
... 
2
>>> try:
...     f(1,0)
... finally:
...     print 'finish'
... 
finish
Traceback (most recent call last):
  File "", line 2, in 
  File "", line 2, in f
ZeroDivisionError: integer division or modulo by zero
>>> 

0 コメント:

コメントを投稿