我正在编写一个PDO包装器,并且遇到了捕获异常的问题。
我正在尝试维护异常安全练习,所以我想知道如何捕获异常,将其写入日志文件,并使用异常安全来做某事,可能告诉用户再次重试操作或导航到错误页面或其他任何内容(您可以建议的任何内容)。
那么如果可能的话怎么办呢?
答案 0 :(得分: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);
}
}