1

カスタム エラー ハンドラを追加したアプリケーションを使用しています。これを追加した理由は、アプリケーションの問題をすぐに通知して追跡できるようにするためです。

ここでの問題は、デバッグ モードで、すべてのエラーを出力するようにエラー ハンドラを切り替えたことです。ここでの目標は、発生したすべてのエラーを排除することです。

現在、シリアル化されている場合とされていない場合があるデータベースから変数を取得しようとしています。したがって、シリアル化されているかどうかを検出するために私が現在知っている唯一の方法は、テストを追加することです。(IE if (unserialize($var)) { // do it })。

関数呼び出しにミュート演算子を追加できますが、カスタム エラー ハンドラはそれを無視します。指定されたエラーがミュートされたかどうかを検出する方法はありますか? または、これを行うより良い方法はありますか?

データベースの構造やデータを変更できません。

4

1 に答える 1

5

関数呼び出しにミュート演算子を追加できますが、カスタム エラー ハンドラはそれを無視します。

実際、この場合、「ミュート」演算子は問題なく機能します。@カスタム エラー ハンドラー内のエラー レポート設定を確認することで、抑制演算子を使用して個々のケースに従うことができます。

set_error_handler(function($errNo, $errStr, $errFile, $errLine) {
    if (0 !== error_reporting()) {
        $msg = "$errStr in $errFile on line $errLine";
        throw new ErrorException($msg, $errNo);
    }
});

if error_reporting() === 0then@抑制演算子が使用されました。残りの処理ルーチンを開始する前にその値を確認する限り、問題ありません。

于 2013-01-07T21:36:53.160 に答える