第39回 evalを学習しよう part2

evalを使えばPerlでも例外処理ができます。
はい 拍手〜〜〜 パチパチパチ


ということでevalを使った例外処理の例をみていきましょう。


次のソースをみてみてください。
Perlでは0での割り算はできません。
0で割り算すると、エラーとなりその行以降の処理はなされません。

ソース

use strict;

my $c = 10;
my $d = 0;

my $e = $c/$d;  # あ〜〜〜 0で割っちゃだめーーー
print 'このあとも処理をつづけたい', "\n";

結果

Illegal division by zero at bingo.pl line 6.

このようにエラーメッセージが出て、処理が止まってしまいました。
が、しかし! evalを使うとどうでしょう?

evalを使ったソース

use strict;

my $c = 10;
my $d = 0;

eval {
  my $e = $c/$d;  # あ〜〜〜 0で割っちゃだめーーー
};
print 'このあとも処理をつづけたい', "\n";

結果

このあとも処理をつづけたい

ね。ちゃんと 0 で割っちゃてるあとの行も処理されるわけです。
簡単でしょ。

このように例外を捕まえたいところを

eval {  };

で囲えばよいのです。最後の;(セミコロン)が抜けると文法エラーなので忘れないように注意です。


それでは また〜