0

エラー ログを追加する複雑な Web アプリがあり、例外をログに記録できるようにしたいと考えています。

try{
//typically mysql queries but can involve PayPal api, Facebook api amongst others
        }
        catch($e){
            logger($e);
        }

$e は常に文字列であると仮定しても安全ですか? そうでない場合、'$e' の文字列出力を常に提供する呼び出し可能な php 関数があるため、ロガーは結果の出力をログ テーブルに保存できます。 ?

4

1 に答える 1

0

C++ ではなく、php であるため、 ExceptionオブジェクトまたはException のサブクラスであるオブジェクトのインスタンスをスローする必要があります。

PHPマニュアルより

スローされるオブジェクトは、Exceptionクラスのインスタンスまたは Exception のサブクラスである必要があります。そうでないオブジェクトをスローしようとすると、PHP Fatal Error が発生します。

そのため、次のような Exception クラス メソッドに常にアクセスできます。

  • final public string getMessage ( void ) //例外メッセージを取得します
  • final public string getTraceAsString ( void ) //スタック トレースを文字列として取得します

そのためcatch(Exception $e){ echo $e->getMessage();}、常に文字列である例外またはトレースのメッセージを取得するために使用できます。

Exception オブジェクトを渡したい場合は、必要に応じて Exception クラスを拡張し、__toString() メソッドをオーバーライドできます。

例外ハンドラの設定にも興味があります

于 2013-05-28T10:05:47.510 に答える