メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年3月4日火曜日

[Python][お勉強] 「Pythonチュートリアル」を読む(14) -- エラーと例外

今日もPythonお勉強。

エラーと例外から。


エラー
エラーには、構文エラーと例外の2種類がある。


例外の処理
プログラムで選択した例外を処理させることができる。


try:
statements1
except Exception:
statements2
 

try節で発生した例外が、except節にある名前(上記ではException)と一致しなければ、
except節は実行されない。
このような例外のことを「未処理例外」といい、メッセージ表示後実行が終了する。
except節は、try節の中で発生した例外のみ処理をする。
except節中で発生した例外を処理したりはしない。

try/except文にはオプションでelse節を入れることができる。

try:
statements1
except Exception:
statements2
else:
statements3
 

else節の記述する場所は、全てのexcept節の後ろでなければならない。
else節は、try節中で例外が発生しなかった場合のみ実行される。



例外の引数
例外に値が付随することがある。この値のことを例外の引数という。
except節では、例外名の後に変数を指定することができる。
この変数には例外のインスタンスがバインドされる。

try:
statements1
except Exception, inst
statements2
 



例外の送出
raise文により例外を送出できる。

raise 例外名, オプション
 

第一引数は例外名を指定する。
第二引数はオプションを指定する。
オプションは「例外の引数」となる。


ユーザ定義例外

例外クラスを作成することで、独自の例外を作成することができる。
通常Exceptionクラスの派生クラスにする。
例外クラスでは通常のクラスにできることは何でもできるが、
通常、複雑にはしない。

また、ユーザ定義例外は名前の最後を"Error"とする習慣がある。



クリーンアップ
try文のexcept節以外の節にfinally節がある。
これはクリーンアップ動作を定義することを意図したもの。

finally節はtry節で例外は発生しようと、しまいと常に実行される。
また、break、continue、return文により抜ける際にも、必ず実行される。


try:
statements1
except Exception:
statements2
else:
statements3
finally:
statements4
 

のように記述できる。
(「初めてのPython」ではexcept節と一緒に使えないようなことが書いてあった気がするが、気のせいだったと。)



with文
with文を使えば、オブジェクトを使用後すぎに適切な方法でクリーンアップされることを保証させることができる。
ただし、オブジェクトにクリーンアップ動作が定義されているものに限る。

ファイルオブジェクトはクリーンアップ動作が定義されている。

with open("abc.txt") as f
for line in f:
print line
 

上記の例では、実行後ファイルfは必ずクローズされる。



おしまい。
.

0 コメント: