2010年9月27日月曜日

Perl best practices[Perlベストプラクティス] 13章 エラー処理 13.11~13.3


このエントリーをはてなブックマークに追加


例外が2つ以上関与する場合は、例外オブジェクトを利用する


 文字列ベースの例外には、既存の例外から、新しい例外を簡単に作成する方法がない。
例えば、特定の範囲外の整数を警告する例外と、あまりにも大きすぎる整数を警告する例外があるとする。
 これを例外オブジェクトを用いた場合、

#以下のような文を含むクラスがあったとする
croak( X::TooBig->new( {num=>$num, list=>$MAX_ALLOWED_VALUE} ))
if $num > $MAX_ALLOWED_VALUE;



以下のように派生クラスを作成することで、

package X::WaaayTooBig;
use base qw( x::TooBig );

#略
croak(X::WaaayTooBig->new( {num=>$num} ) )
if $num > $MAX_INT;



どちらの例外の場合でも、同じコードで補足できる。
つまり派生した例外を作成しても、例外を処理するコードを変更する必要がない。
if( X::TooBig->caught() ){

}

例外クラスは派生端から順に補足する


if( X::TooBig->caught())とした場合、X::WaaayTooBig例外が送出された場合、真となる。
X::waaayTooBigはX::TooBigを継承しているから。

例外クラスを自動的に構築する


 例外クラスは便利で保守性が高いが、コードを書くのが難しい。
Exception::Classモジュールを使用するとよい。




0 件のコメント:

コメントを投稿