メモ: Error.pm でサブクラス化した例外を投げる
例外を投げるときは $obj->throw。ベースクラスは Error::Simple。
try { MyException->new("hello world")->throw; } catch MyException with { my $e = shift; print "$e\n"; }; package MyException; use base qw(Error::Simple);
みたく書く、色々教えてもらった結果理解した。miyagawa++ tokuhirom++
8/28追記: ちなみに Error::Simple がセットする $@ は例外として送出されるオブジェクトで、かつ Error::Simple は stringify をオーバーライドしているので、eval を使って例外監視している場合もちゃんと動く。
eval { MyException->new("hello world")->throw; }; if ($@) { print ref $@; # prints MyException print $@; # prints "hello world" }