2

私は PDO ラッパーを作成しており、例外のキャッチでこの問題が発生しています。

私は 例外の安全性の実践を維持しようとしているので、例外をキャッチしてログファイルに書き込み、例外の安全性を使用して何かを行う方法を知りたかったのですが、おそらくユーザーにアクションを再試行するか、エラーページに移動するように指示しますまたは何でも(あなたが提案できるものなら何でも)。

では、可能であればどのように行われますか?

4

1 に答える 1

4

このコード スニペットを見てください。それがどのように行われるかを示しています。

class MyDb extends PDO 
{
  protected $error;

  function __construct( $logger )
  {
    try {
      parent::__construct( 'mysql:host=localhost;dbname=xxxx', 'xxx', 'xxx' );
      $this->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );

    }
    catch ( Exception $e ) {
       $this->error = $e->getMessage();
       // do your log writing stuff here
       $logger->Add( $this->error ); 
    }
  }
}

アップデート:

クラスの使用法:

$logger = new MyLogger();
$db = new MyDb( $logger );

もちろん、add メソッドを持つロガー クラスが必要です。

class MyLogger
{
  const FILENAME = '/tmp/mylog.txt' ;

  function Add( $error )
  {
    file_put_contents( self::FILENAME, $error, FILE_APPEND);
  }
}
于 2012-10-02T20:09:52.957 に答える