我在 PHP 中时不时地看到这样的代码,我想知道这到底是怎么回事。
$pdo = new PDO ($connect_string, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$pdo->exec ("QUERY WITH SYNTAX ERROR");
}
catch (PDOException $e) {
echo $e->getMessage();
}
我感兴趣的是一般的catch (PDOException $e)
代码。
我 var_dump 异常,它返回 PDOException 类(doh..逻辑)。但这并不清楚这项技术背后的想法是什么、为什么使用它以及它的名字是什么:)
我也在 Java 编程中看到过这种技术,但不幸的是我不太了解 Java...:/
最佳答案
这是一个异常处理程序,用于处理 $pdo->exec()
引发的异常。
当您执行$pdo->exec()
时,可能会发生异常(代码未按预期运行),并且它们被抛出 (使用 throw new PDOException('error!')
或类似方法)。它们将被扔到其特定类型的第一个捕获处。
在上面的示例中,您的 catch() { ... }
block 将捕获 PDOException
的异常。如果您没有该 block ,它将冒泡到任何进一步的异常处理程序,如果不处理,将使您的应用程序崩溃。您将看到一些应用程序有一个 try{ ... }/catch(){ ... }
block 来包装其主要请求,因此未处理的异常将一直冒泡到它(并且已处理)。
如果您需要清理代码或在捕获异常时必须运行的任何代码,您可以使用finally { ... }
(但是PHP at this stage does not support it)。
如果要更改异常处理程序的行为,可以使用 set_exception_handler()
.
关于java - PHP 中的 "catch block"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560095/