Python高座
7. 制御構造2
制御構造の2回目は例外処理である。
python には例外処理に使う try 文がある。c++ の try-catch に似たようなものだ(と思うが c++ の方を本当はよく知らない)。
try で始まる塊の中で例外が発生したばあい、その例外を捕まえて処理を行う。捕まえる例外は except に記述しておく。except は幾つも書ける(書けないと困ってしまうだろう)。以下のような形で使う。
- try:
- 塊
- except 例外,格納変数:
- 塊
…
- else:
- 塊
except 文の格納変数は、例外の値を格納するための変数であり、省略してもよい。else 塊はなくても構わない。これは他の制御構造と同じく、例外が発生しなかった時に実行される部分である。捕捉されるべき例外は、ZeroDivisionError や TypeError などである(dir(__builtins__) で確認できる)。また、後で述べる raise 文で自分で作り出した例外を使うこともできる。
もう一つの try 文の使い方として、次のものもある。
- try:
- 塊
- finally:
- 塊
こちらは、try 塊中で例外が発生すると、finally 塊を実行してからこの構文の外に例外を投げる。except と finally を同じ一つの try 塊に続けることはできない。
例外を、意図的に発生させることもできる。それが raise 文である。
- raise 例外, 値
と書けば、好きな例外で好きな値を返すことができる。ここで例外として与えられるのは、文字列(かクラスかその実体)だけである。値にはそういう制限はない。使い方としては、try 文の中で例外を発生させて制御を好きなところに移す、などが考えられる。
使用例を示しておく。
>>> MyError='myerror'
>>> try:
... print 'Emerson'
... try:
... raise MyError, 'Palmer!'
... finally:
... print 'Lake'
... except MyError,val:
... print '&',val
...
Emerson
Lake
& Palmer!
目次 |
索引 |
戻る |
進む