HOME備忘帳

CGIでも気軽にdie

evalで囲んだ中なら、diecroakなどの例外が発生したときに、それを捕まえられます。 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

[ ページ先頭へ ]