如何在Catch之后访问PDOException

问题描述 投票:0回答:2

在以下代码中,“$ e”获取“getMessage()”。我知道我可以使用“catch {}”将其打印到屏幕上或将内容存储在变量中供以后使用,但是如果我不想这样做呢?我以后如何访问它?我看到有“getPrevious()”,但是我如何在以后从另一个函数访问它,或者我可以?:

$servername = "localhost";
$username = "username";
$password = "password";

try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully"; 
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}

我已经尝试过以下内容,看看我是否可以访问这些信息,但是我无法正确获取语法?:

function ShowLater(){
    // Cant figure out how to access the info :(
    echo PDO::PDOExeption,$e->getMessage();
    echo PDO::PDOExeption,$e->getPrevious();
}

ShowLater();

基本上,我如何访问将显示的内容

echo "Connection failed: " . $e->getMessage();

后来在“catch {}”之外

我会回应什么变量?

php pdo
2个回答
0
投票

连接可以在$ conn变量中找到,PHP在try {}块中出现错误时停止代码执行,然后跳转到catch {}块,这意味着您可以通过打印来报告catch块中发生的事情。 $ e-> getMessage()中的错误描述


0
投票

我不相信在事件被捕获或未在php中捕获之后可以访问错误堆栈。如果您没有捕获异常,它将停止执行脚本。但是,看起来你可以传入一个先前的异常,一旦作为异常的参数被捕获,然后循环遍历所有先前的异常以在事后得到它们。然而,在说了所有这些之后,为什么不将它们存储在变量中并稍后报告它们。查看为getPrevious() here提供的示例,以获取有关如何实现它的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.