【发布时间】:2014-08-08 23:03:37
【问题描述】:
我想知道下面的程序流程是否会因为 try 中的返回而阻止 finally 在这个 try-catch-finally 块中运行。
请原谅糟糕的错误检查和清理,这只是一个模拟:
function doLogin() {
$dbh = new PDO('mysql:host=localhost;dbname=test', "root", "");
$errors = array();
$loginSuccess = false;
try {
$query = $dbh->prepare('SELECT *
FROM users
WHERE username = :username');
$query->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
$result = $query->fetch(PDO::FETCH_ASSOC);
if (!password_verify($_POST['password'], $result['password'])) {
array_push($errors, 'Invalid password.');
return; // will this return prevent the finally from being run?
}
else {
$loginSuccess = true;
}
}
catch (PDOException $pdoEx) {
echo 'Error occurred ' . $pdoEx->getMessage();
}
finally {
$dbh = null;
}
}
代码写得很糟糕,但希望你能理解我的意思。
【问题讨论】:
-
为什么不写一个快速的示例程序来测试它呢?
-
@VinceEmigh - 这个问题是关于 Javascript 的。尽管 PHP 和 Javascript 有一些相似之处,但它们绝对不是同一种语言,并且处理方式可能不同。
-
@Mr.Llama 我会去做的,只是想快速进入并询问 SO,以防万一这是非常基本的程序流程知识。
标签: php