Error.pm を使ってみる。
Test::Exceptionで、Error.pmの例外をチェックするサンプルがあったのでError.pmを使ってみる。
use Error qw(:try); # 引数が偶数の場合は真を返す。ただし、引数が整数でない場合は例外を返す。 sub is_even { my $n = shift; try { if ( $n != int($n) ) { throw Error::Simple("argument is not an integer : $n"); } } catch Error with { my $err = shift; $err->throw; }; return $n % 2 == 0; }
はまったところ
- use Error qw(:try) と明示的に指定しないと try が使えない
- catch 内で再度エラーを投げる場合は、$err->throw としないといけない。
そもそも
- try catchについてちゃんと理解してなかったのがマズイ。
- 今回の用途では、try catch する必要がない。
本来書くべきだったコード
use Error qw(:try); # 引数が偶数の場合は真を返す。ただし、引数が整数でない場合は例外を返す。 sub is_even { my $n = shift; if ( $n != int($n) ) { throw Error::Simple("argument is not an integer : $n"); } return $n % 2 == 0; }
参考
http://perldoc.jp/docs/modules/Error-0.15/Error.pod
http://d.hatena.ne.jp/bingo_nakanishi_perl/20090219/1235062860
http://d.hatena.ne.jp/minesouta/20070823/p1
結論
勉強不足すぎる。