3

LWPHTTPS トランスポートとXML::SimpleXML ペイロードの解析用のパッケージを使用して、Perl で記述された SOAP クライアントがあります。時々、 の呼び出しがXMLindie() で失敗し、スクリプトが停止し、これを検出するために作成した監視プログラムによって再起動する必要があります。これは本当に望ましくないので、Perl に C++ 例外処理メカニズムのような機能があり、ダイ メッセージをキャッチし、それを無視してエラーを報告し、エラーが発生したかのようにスクリプトを続行できるかどうか疑問に思っていました。私は多くの Perl の本を読み、これを探しましたが、何かを見つけることができませんでした。これは私のアプリケーションを殺していますが、絶対に必要でない限り、独自の XML 解析コードを書きたくありません。

4

2 に答える 2

7

はい; これを行うための基本的なメカニズムは次のようになりますeval

sub a { die "BAD"; }
eval { a(); }
print "Survived an exception $@";

ただし、 Try::Tinyなどのように、より高レベルのコンストラクトを使用する必要がある理由があります (それにもかかわらず、これの上に構築されます) 。(ドキュメントの下部にあるリンクを参照してください)。

于 2012-07-03T18:47:36.463 に答える
-2

"die" をキャッチすることはできますが、それをキャッチすることでスクリプトが死ぬのを止めることはできません:それ自体は、「goto」、ループ出口、または「die()」を介して終了します。*

ただし、eval{} ブロック内で die() を呼び出しやすいルーチンを実行することはできます。

于 2012-07-03T19:22:15.400 に答える