Как я могу получить доступ к PDOException после Catch - PullRequest
0 голосов
/ 19 мая 2018

В следующем коде «$ 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 голосов
/ 19 мая 2018

Я не верю, что существует стек ошибок, доступный после того, как исключения обнаружены или не обнаружены в php.Если вы не поймаете исключение, оно остановит выполнение скрипта.Тем не менее, похоже, что вы можете передать предыдущее исключение, однажды пойманное в качестве аргумента для исключения, а затем позже, перебрать все предыдущие исключения, чтобы получить их по факту.Однако, сказав все это, почему бы просто не сохранить их в переменной и сообщить об этом позже.Посмотрите пример, приведенный для getPrevious() здесь , чтобы узнать, как его реализовать.

0 голосов
/ 19 мая 2018

соединение может быть найдено в переменной $ conn, PHP останавливает выполнение кода, когда в блоке try {} возникает ошибка, затем переходит к блоку catch {}, это означает, что вы можете сообщить о том, что произошло в блоке catchраспечатав описание ошибки в $ e-> getMessage ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...