第44回 evalで例外処理

evalで囲ってしまって、dieさせない例を見てきました〜。


さてさて、次のようなことを考えてみましょう。


ファイルを無事にopenできた場合は、ファイルを読み込んで正常な処理をする。
もし、ファイルがopenできなかった場合はその旨をデータベースに残しておくためにデーターベースに書き込みにいく。


こういった処理を考えた場合。
ファイルがないからといってdieされては困ります。


そこで、eval

evalを使ってdieを捕まえるのです。
evalが例外を捕まえれば、$@に値が入るのは前回みましたね。
これを使いましょう。

ソースを見た方が早いので、ソースを載せちゃいます。

use strict;

my $f;
eval {
 open $f, '<', 'hoge.txt' or die $!;
};

if($@){
  print '大変だデータベースに登録', "\n";
} else {
  print 'ファイルがあったときの処理', "\n";
}

データベースやらなんやらに書き込みにいくといった処理は
print文で擬似的にすませちゃいましたが、こんな感じで例外処理をしていくことが可能です。


それでは また〜