2

コードに LDAP サーバー要求があります。で接続を開き、ldap_connect返された記述子が有効であることを確認しますがldap_search、開いている記述子を使用して検索要求を行います。しかし、ネットワークの障害などにより、ldap_search警告が表示されて失敗することがありますSearch: Can't contact LDAP server

私の運用サーバーでは、すべての警告を致命的なエラーとして扱うため、ページ全体のレンダリングが失敗します。

先頭に追加ldap_searchして@、返された値を確認する必要がありますか (現在も確認しています)、またはこれを処理するためのより良い方法がありますか?

4

2 に答える 2

1

個人的に私はあなたに同意します.@そこに押し込んでエラー状態を手動でチェックします-これはmysql_connectand Memcache->connect、およびfsockopen私が行うすべての呼び出しに対して行います.

@ただし、ほとんどのナッツは、決して使用しないで、代わりにカスタムエラーハンドラーを使用する必要があると言うでしょう。だから...あなた次第!

于 2013-06-20T02:42:41.050 に答える
1

独自のエラー ハンドラを設定することで、警告を例外に変えることができます。すべての警告をキャッチして、コールバック内で例外をスローするだけです。そうすれば、不要な出力に対処する必要はありませんが、回復する (ユーザーを一時的なエラー ページに誘導する) 機会が得られます。これは、致命的なエラーでは実行できません。

場合によっては、外部リソースが警告をスローし、エラーが発生したかどうかを確認することもできます (mysqli など)。この場合、 で警告を無視できますが@、エラーが発生したかどうかを確認してください。

警告が他の方法で処理されることを確認せずに、警告を抑制するだけではありません。ユーザーは、特に状況が一時的なものである場合に、問題が発生した理由を知りたいと考えています。

補足として: PHP の警告はばかげた概念だと思います。コードは失敗するかしないかのどちらかです。失敗した場合は、フープを飛び越えずに対処できるようにしたいと考えています。例外を投げてください!

于 2013-06-20T02:44:02.157 に答える