我怎样才能捕捉到以下错误:No error: PDO constructor was not called
?
我的问题不是如何解决错误,而是如何捕捉它!
我需要一个 PHPUnit 测试环境。
我试图像那样抓住它,但它根本不能那样工作。
$pdo = (new \ReflectionClass(\PDO::class))->newInstanceWithoutConstructor();
try
{
$pdo->query("SELECT * FROM table");
}
catch (ErrorException $exc)
{
echo $exc->getTraceAsString();
}
确切的(错误)消息如下:PDO::query(): SQLSTATE[00000]: No error: PDO constructor was not called
,但我不确定,是否甚至可以捕获任何类型的 PHP。
我已经检查了pdo_raise_impl_error()
使用上述错误消息调用的方法[PHP 7.3.3],但我不够聪明,无法预测它产生的实际错误类型......
可以请人给建议吗?
我现在在测试前使用以下代码。请特别检查第一行和最后一行代码。
感谢@YourCommonSense!
set_error_handler(function(int $errno, string $errstr, string $errfile, int $errline) {
throw new ErrorException($errstr, $errno, E_ERROR, $errfile, $errline);
});
$this->expectException(ErrorException::class);
$this->expectExceptionMessage("SQLSTATE[00000]: No error: PDO constructor was not called");
/* @var $pdo PDO */
$pdo = (new ReflectionClass(PDO::class))->newInstanceWithoutConstructor();
$pdo->query("SELECT * FROM table"); // triggers the error.
restore_error_handler();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句