2011-07-06 1 views
0

この機能についてはあまり明確ではありません。Perlでは、内側のeval {}内でエラーが発生しましたが、外側のeval {}によってもキャッチできますか?

状況には独自の評価キャッチを持つAPIがありますが、通常はステータスを返します。 このAPIを使用し、実行に関する特定のステータスが必要な場合は、APIによって生成されたエラーがあれば、外部評価をキャッチしてキャッチします。出来ますか ?または内部評価によって無視されます。

答えて

2

dieでエラーを「スロー」し、エラーを「キャッチ」した場合、外側のevalはそれを「キャッチ」して必要に応じて処理できます。 APIがキャッチして戻り値などのエラーコードを返すだけの場合は、アウターevalは必要ありません。あなたは正確に知っている限り、より具体的な例としては役立つかもしれない...

0

は、チェックアウトこの例...

use strict; 
use warnings; 

eval { api_function(); }; 

if ([email protected]) { 
    warn "Oops! API error!"; 
} 

sub api_function { 

    eval { 
     my $a = 1; 

     my $x = 1/$a; 
    }; 

    if ([email protected]) { 
     warn "Oops! error!"; 
    } 

    my $a = 0; 

    my $x = 1/$a; 
} 
+4

警告動作しますが、直接 '@' eval'と '$を使用してエラーをキャッチしようとしないでくださいあなたがしていること(ヒント、 'Try :: Tiny'を使用していない場合は、あなたが何をしているのか分かりません)。その代わりに['Try :: Tiny'](http://search.cpan.org/dist/Try-Tiny/lib/Try/Tiny.pm)を使ってエラーを捕捉してください。理由の詳細については、[ドキュメントの背景セクション](http://search.cpan.org/dist/Try-Tiny/lib/Try/Tiny.pm#BACKGROUND)を参照してください。 –

関連する問題