如何在Catch

时间:2018-05-19 00:13:52

标签: php pdo

在以下代码中,“$ 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 {}”之外

我会回应什么变量?

2 个答案:

答案 0 :(得分:0)

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

中打印错误描述

答案 1 :(得分:0)

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