php - PDO "exception safety"并将其写入 PHP 日志文件

标签 php exception pdo

我正在编写一个 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);
  }
}

关于php - PDO "exception safety"并将其写入 PHP 日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697438/

相关文章:

php - 如何在不使用任何Excel库PHP的情况下创建xlsx文件

php - 如何在 PHP 中解码 HTML 引用实体

使用 mysql_query 函数和安全性的 PHP 参数化查询?

Java Swing : Jtable ArrayIndexOutOfBoundsException

php - 如果我从数据库中获取哈希值,password_verify 返回 false,但如果我复制并粘贴它,则返回 true

php - 我应该将 PDO 对象传递给每个对象,还是为每个对象创建一个新的 PDO 对象?

PHP::PDO 多次打开/关闭连接

javascript - jQuery 代码中 PHP 文件中的 jQuery 变量

java - 有时连接 MySQL 时出现问题

XamlParseException 无法分配给属性。绑定(bind)不适用于附加属性