PDO的“例外安全性"并将其写入日志文件PHP [英] PDO "exception safety" and writing it to a log file PHP

查看:83
本文介绍了PDO的“例外安全性"并将其写入日志文件PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写PDO包装程序,并且遇到捕获异常的问题.

I am writing a PDO wrapper and having this issue with catching exceptions.

我试图维护异常安全性做法,所以我想知道如何捕获异常,将其写入日志文件,并使用异常安全性来做某事,可能告诉用户重试操作或导航到错误页面或任何其他内容(您可以建议的任何内容).

I am trying to maintain exception safety practice,so I wanted to know how to catch an exception,writing it to a log file,and using exception safety to to do something, probably tell the user to retry action again or navigate to an error page or whatever (anything you can suggest).

那怎么办呢?

推荐答案

看下面的代码片段,它显示了它是如何完成的:

Look at this code snippet, it shows how it is done:

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方法的记录器类:

of course, you need a logger class with a add method:

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

  function Add( $error )
  {
    file_put_contents( self::FILENAME, $error, FILE_APPEND);
  }
}

这篇关于PDO的“例外安全性"并将其写入日志文件PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆