燈明ブログ

現状は小池啓仁の応援ブログ

warn() carp() die() croak() について

  • warn() は、警告メッセージ出力に使う。
  • carp() は、warn()プラス、「どの呼び出しが警告を発したか」がわかりる。
  • die() は、 例外送出(デフォルトではエラーメッセージをSTDERRに吐いてexit)。
  • croak() は、 die()プラス、「どの呼び出しがdieを発したか」がわかりる。

exit() は、単にプログラム終了なのに対して、die()は、例外送出。

  • die()は例外送出である
  • デフォルトではエラーメッセージをSTDERRに吐いてexitしてくれる
  • exit()はなるべく使わずにdie()を使え
  • OOなdie()もアリ
  • $SIG{__DIE__}で前処理も可能
     my $what_happened;
     eval{
         local $SIG{__DIE__} = sub {
             $what_happened = shift;
         };
         die "I am not dead yet";
         print "I will not be executed";
     };
     print STDERR qq(what_happend = '$what_happened'\n);
     die "normally";
http://blog.livedoor.jp/dankogai/archives/51048234.html