第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文で擬似的にすませちゃいましたが、こんな感じで例外処理をしていくことが可能です。
それでは また〜