0

何かをロードしたり失敗したりした場合 (リモートサーバーなど) に PHP がエラーをスローする状況を回避したいと考えています。最近、致命的なエラーを回避するために try-catch ブロックを使用し始めたので、ユーザーは何かが台無しになっていることを知りません。

私のコードを見てください:

try
{
    $flashRAW = file_get_contents($getXml);
    $flashXML = simplexml_load_string($flashRAW);
}
catch(Exception $e)
{
    return $e->getMessage();
}

$xmlString = $flashXML->asXML();

"return" を使うのは私の発明です (私はそれを見たことがないと思います...)。戻ってきても、アプリケーションは引き続き動作し、「オブジェクト以外のプロパティを取得しようとしています」というエラーは発生しません。リターンなしで取得します-これを防ぐためにtry-catchを使用しているので、それはばかげていると思います...

この方法で return を使用しても問題ありませんか? 例外を処理し、そのアプリケーションが致命的なエラーなしで動作し続けるようにするためのより良い方法はありますか? どこかで、try-catch は論理エラーを処理し、メモリ消費を増やすことを目的としていると読んだことがあります。

4

2 に答える 2

1

あなたが得ている問題は、例外がある場合に「$ flashRAW」が定義されていないためだと思います。

「$flashXML->asXML()」を呼び出す前に、「$flashRAW」をチェックする必要があります。

return を使用すると、コードの場所に応じて関数/ページでコードが実行されません。

return を使用するかどうかの選択は、ユースケースに基づいています。だから使い方次第。

于 2013-03-04T10:35:18.543 に答える
0

発生する例外をキャッチしたい場合は、libxml_use_internal_errorsを使用する必要があります。これは、try/catchブロックの前に実行してください。

libxml_use_internal_errors(true);
于 2013-03-04T10:51:04.597 に答える