perlの例外処理

2011/06/01

evalでもできるが、Error.pmでやるのがオブジェクト指向的。ただし、標準関数じゃないので、注意。インストールせずにアップするだけで使える。

use Error qw(:try);
try {
$source = XML::FeedPP->new($c{feed}{$device}{source}{$name}{rss});
} catch Error with {
my $e = shift;
warn ‘(‘ . $c{feed}{$device}{source}{$name}{rss} . ‘) is ‘ . $e->text;
goto LOOP_LAST;
};

なかんじで、tryでエラーを投げて、catchで捕まえる。

ただ、catch内は、while(1)が廻ってるらしく、nextすると無限ループになるので、ラベル指定で直接ループ最後まで逃げる必要がある。

広告