2011年11月28日月曜日

dieをシグナルでフックしたいが、evalは例外にしたい。


このエントリーをはてなブックマークに追加


evalで囲っているけど、$@が出力されてない、コード全部直すの面倒!ってときに

evalの中で起こったエラーを検出する



$SIG{__DIE__} = sub {
# ログ出力
}



eval内の例外をキャッチするコードはちゃんと書いているので、eval内のdieはフックせず無視したい場合

evalと$SIG{__DIE__}とcaller



  • eval内でdieされたときは $^S == 1(perlvar参照)



$SIG{__DIE__} = sub {
return if $^S;
# ログ出力
}





0 件のコメント:

コメントを投稿