WEBシステム開発・ディレクション
evalで囲んだ中なら、dieやcroakなどの例外が発生したときに、それを捕まえられます。
CGIでも気軽にエラーを出せて便利です。
#!/usr/bin/perl
use strict;
use warnings;
eval {
die("コケました");
};
if($@){
print <<EOM;
Content-type: text/html
<html>
<head><title>error</title></head>
<body>
<h1>error</h1>
<p>$@</p>
</body>
EOM
}
exit;
特殊変数$@には、最後に実行したeval内で発生した例外エラーメッセージがセットされます。
エラーが発生しなかったときは、必ずundefがセットされるので、if ($@) { エラー処理 }が常套句。
ナゾの変数$@がキモいなら、use Englishをどうぞ。Englishは標準モジュールなので、追加インストールなしで使える可能性大です。
#!/usr/bin/perl
use strict;
use warnings;
use English;
eval {
die("コケました");
};
if ($EVAL_ERROR) {
#エラー処理
}
お気づきかと思いますが、evalは命令文なので、末尾にセミコロン;が無いとコンパイルエラーです。
あと、当然ながら、エラー処理内で発生した例外は捕まえられません。あまり複雑な処理を入れないほうが無難かと。
最終更新日:2010/05/08