php异常处理使用示例


在PHP中,异常处理是通过`try`、`catch`和`finally`(PHP 5.5及以上版本)块来实现的。下面是一个简单的PHP异常处理使用示例:


<?php

// 自定义异常类
class CustomException extends Exception {}

try {
    // 假设这里有一段可能会抛出异常的代码
    if (time() % 2 == 0) {
        // 如果当前时间是偶数秒,则抛出一个自定义异常
        throw new CustomException("这是一个自定义的异常信息", 1);
    }

    // 其他正常的代码...
    echo "没有异常发生。\n";
} catch (CustomException $e) {
    // 捕获自定义异常
    echo '捕获到自定义异常: ',  $e->getMessage(), "\n";
} catch (Exception $e) {
    // 捕获其他类型的异常
    echo '捕获到异常: ',  $e->getMessage(), "\n";
} finally {
    // finally块无论是否捕获到异常都会执行
    echo "这是finally块,无论是否发生异常都会执行。\n";
}

// 假设的当前时间不会影响这个脚本的展示效果,但理解逻辑即可。
?>

在这个示例中,我们首先定义了一个名为`CustomException`的自定义异常类,它继承自PHP的内置`Exception`类。在`try`块中,我们模拟了一段可能会抛出异常的代码。如果当前时间的秒数是偶数,则抛出一个`CustomException`类型的异常。

`catch`块用于捕获并处理异常。首先,我们尝试捕获`CustomException`类型的异常,并输出异常信息。如果捕获的不是`CustomException`类型的异常,但仍然是`Exception`类型的异常(例如,其他库抛出的异常),则会被第二个`catch`块捕获。

`finally`块是可选的,它会在`try`和`catch`块之后执行,无论是否捕获到异常。这可以用于执行清理工作,比如关闭文件句柄、释放资源等。

这个示例展示了PHP中异常处理的基本用法,包括自定义异常、异常捕获和处理,以及`finally`块的使用。