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

标签 java php class

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

相关文章:

java - 创建对象数组的 ArrayList

java - 切换到 cardlayout 中的动画图像

php - Laravel - 迁移时找不到驱动程序

php - php 和 mysql 中 while 循环中的 if 语句中的日期格式显示为 1970 年 1 月 1 日

python - 在 Python 中重置类的首选方法

Java - 是什么导致了 ClassFormatError?

java - 用于 C/C++ 和 Java 的 Eclipse IDE

java - 两个文本文件中的 "words"不同,并将它们加粗,在两个txt中显示在屏幕上。文件

javascript - 动态创建文本区域和按钮

javascript - Array.some() 不是函数