私は PDO ラッパーを作成しており、例外のキャッチでこの問題が発生しています。
私は 例外の安全性の実践を維持しようとしているので、例外をキャッチしてログファイルに書き込み、例外の安全性を使用して何かを行う方法を知りたかったのですが、おそらくユーザーにアクションを再試行するか、エラーページに移動するように指示しますまたは何でも(あなたが提案できるものなら何でも)。
では、可能であればどのように行われますか?
このコード スニペットを見てください。それがどのように行われるかを示しています。
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);
}
}