この機能についてはあまり明確ではありません。Perlでは、内側のeval {}内でエラーが発生しましたが、外側のeval {}によってもキャッチできますか?
状況には独自の評価キャッチを持つAPIがありますが、通常はステータスを返します。 このAPIを使用し、実行に関する特定のステータスが必要な場合は、APIによって生成されたエラーがあれば、外部評価をキャッチしてキャッチします。出来ますか ?または内部評価によって無視されます。
この機能についてはあまり明確ではありません。Perlでは、内側のeval {}内でエラーが発生しましたが、外側のeval {}によってもキャッチできますか?
状況には独自の評価キャッチを持つAPIがありますが、通常はステータスを返します。 このAPIを使用し、実行に関する特定のステータスが必要な場合は、APIによって生成されたエラーがあれば、外部評価をキャッチしてキャッチします。出来ますか ?または内部評価によって無視されます。
die
でエラーを「スロー」し、エラーを「キャッチ」した場合、外側のeval
はそれを「キャッチ」して必要に応じて処理できます。 APIがキャッチして戻り値などのエラーコードを返すだけの場合は、アウターeval
は必要ありません。あなたは正確に知っている限り、より具体的な例としては役立つかもしれない...
は、チェックアウトこの例...
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;
}
警告動作しますが、直接 '@' 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)を参照してください。 –