3

die()PerlENDブロッ​​クで発生する a を無視するにはどうすればよいですか?

今のように私は得る

END が失敗しました -- コール キューが打ち切られました

そして、エラーは呼び出しスクリプトを泡立てます。

4

3 に答える 3

8

終了ブロックを の中に入れてくださいeval { .... }- これにより、説明した動作が妨げられるはずです。

#!/usr/bin/perl

print("hi there!\n");

END {
    eval{
        print("goodbye\n");
        die("this can't hurt....");
    };

    #detect if an error occurred in the eval
    if ( $@ ){
        print ("an error occurred: $@\n");
    }
}
于 2013-01-09T23:50:30.197 に答える
5

コードを eval ブロッ​​ク内に配置し、die が提供するエラー メッセージを取得する場合は、ブロック外で if 条件を使用してキャプチャできます。

#!/usr/bin/perl
my $val=1;
eval
{
   print "Inside Eval\n";
   if($val == 1)
   {
     die "hello world\n";
   }
   print "End of Eval\n";
};
if ( $@ )
{
         print  "Error message - $@" . "\n";
}
于 2013-01-10T01:18:37.723 に答える
3

Try::Tinyevalは、実行時の例外を明示的に処理できるようにするための優れたラッパーです。

于 2013-01-10T01:03:38.027 に答える