setAttribute-6ren">
gpt4 book ai didi

java - PHP 中的 "catch block"是什么?

转载 作者:行者123 更新时间:2023-12-01 17:36:42 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com