我正在使用带有try ... catch语句的PDO。如果我理解正确的话,我想和你们确认一下。我是否先将$dbhandler = NULL
放在 throw
$dbhandler = NULL;
if(!$sthandler->rowCount()) throw new invalidUplineException();
或之后投掷
if(!$sthandler->rowCount()) throw new invalidUplineException();
$dbhandler = NULL;
答案 0 :(得分:0)
关闭PDO连接就像这样简单:
$db = new PDO($dsn, $username, $password); // Make connection
$db = NULL; // Close connection
答案 1 :(得分:0)
使用刚刚设置为null
的引用是错误的。因此,存储行计数,然后将其设置为null:
$rowCount = $sthandler->rowCount();
$sthandler = null;
if(!$rowCount) { throw new invalidUplineException(); }
“投掷之后”可以起作用,但仅限于没有抛出异常的情况。
答案 2 :(得分:0)
当抛出异常时,脚本执行会跳转到下一个匹配的catch()
块(如果您在try{}
块内)或完全停止(如果未捕获异常)。此行为与PDO无关,它是异常在支持它们的所有语言中的工作方式。因此,第二个示例中的$dbhandler = NULL;
部分将永远不会被执行。这是一个你可以运行的简单测试:
<?php
try{
throw new Exception('This exception will be caught');
echo 'Exception thrown, this line will not run' . PHP_EOL;
}catch(Exception $e){
echo 'Exception was caught as expected' . PHP_EOL;
}
throw new Exception('This exception will not be caught. Script ends here.');
echo 'Exception thrown, this line will not run either.' . PHP_EOL;