PHP 中的“finally”关键字的作用是什么?

2024-01-16

考虑这两个例子

<?php
function throw_exception() {
    // Arbitrary code here
    throw new Exception('Hello, Joe!');
}

function some_code() {
    // Arbitrary code here
}

try {
    throw_exception();
} catch (Exception $e) {
    echo $e->getMessage();
}

some_code();

// More arbitrary code
?>

and

<?php
function throw_exception() {
    // Arbitrary code here
    throw new Exception('Hello, Joe!');
}

function some_code() {
    // Arbitrary code here
}

try {
    throw_exception();
} catch (Exception $e) {
    echo $e->getMessage();
} finally {
    some_code();
}

// More arbitrary code
?>

有什么不同?是否存在第一个示例无法执行的情况some_code(),但第二个会吗?我完全没有抓住重点吗?


如果捕获异常(任何异常),则两个代码示例是等效的。但是如果你只在类块中处理某些特定的异常类型并且发生另一种异常,那么some_code();仅当您有一个时才会被执行finally block.

try {
    throw_exception();
} catch (ExceptionTypeA $e) {
    echo $e->getMessage();
}

some_code(); // Will not execute if throw_exception throws an ExceptionTypeB

but:

try {
    throw_exception();
} catch (ExceptionTypeA $e) {
    echo $e->getMessage();
} finally {
    some_code(); // Will be execute even if throw_exception throws an ExceptionTypeB
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 中的“finally”关键字的作用是什么? 的相关文章

随机推荐

  • ASP.NET Core 2.2 创建身份用户

    ASP Net Core 全新 必须使用 Identity 创建一个 asp net core 2 2 项目 并让用户播种 我找不到任何有关如何准确执行此操作的文档 我能够找到创建身份角色的代码 无论如何编译 还没有达到可以运行它的位置 p
  • 在控制台中移动光标和打印字符不适用于睡眠[重复]

    这个问题在这里已经有答案了 我想在同一个地方逐个打印一系列字符 我打印一个字母 然后睡眠等待 1 秒 使用控制台代码将光标向左移动一列 打印下一个字母 依此类推 问题是结果程序等待所有睡眠的总和 在我的示例中为 2 秒 然后仅打印最后一个字
  • Git 存储库未导出:致命:远程端意外挂起

    设置新的 git 安装 在一台 Windows 笔记本电脑上 我正在运行 在 cygwin 下 git daemon base path cygdrive c work proj 我的项目的根目录是 c work proj proj1 有一
  • 如何查找solr服务器是否正在运行

    我正在运行一个从 solr 服务器获取搜索结果的应用程序 但是当服务器未运行时 我没有收到服务器的响应 有什么方法可以发现我的服务器没有运行 以便我可以给出正确的错误消息 您可以定期 ping 您的服务器 例如http localhost
  • iOS9:崩溃报告中的重复行导致symbolicatecrash卡住

    This is 不是一个问题因为我已经找到了解决方法 我将其发布 以便其他人可以利用我在其上花费的时间 并使用我建议的解决方法 我收到了一些奇怪的崩溃报告 一行被重复了很多次 0x190e08000 0x190e49fff Notes ar
  • 三柱图

    某个过程的结果是从 A 到 C 通过 B 的路径列表 例如 which effect A1 A2 10 1 1 1 1 10 2 1 2 1 10 28 1 3 1 10 6 9 4 1 10 24 9 5 1 10 28 9 我想要的是一
  • 可捕获的致命错误:传递给 Illuminate\Routing\UrlGenerator::__construct() 的参数 2 必须是 Illuminate\Http\Request 的实例,给定 null

    当我尝试运行时出现此错误php artisan anything PHP Catchable fatal error Argument 2 passed to Illuminate Routing UrlGenerator construc
  • 苹果:联盟链接可以通过应用内购买赚钱吗?

    苹果最近 在过去一两个月内 对其联属计划进行了一系列更改 您能回答这个问题 联盟链接可以通过应用内购买赚钱吗 示例 联盟链接到一个免费应用程序 然后导致该应用程序中的应用程序内购买 是否会为链接所有者赚取佣金 先感谢您 简短的回答是 是 应
  • Android - 1 除以 2 = 0

    我一直在尝试使用我的新 IOIO for android 并且需要找到信号的频率 所以我将信号转换为二进制 然后用 1 除以 1 之间的时间 尽管当我这样做时 我发现我的输出为 0 然后我决定看看 1 2 给了我什么 令我惊讶的是它也给了
  • gluon Mobile LocalNotificationsServices.class 不工作

    大家好 我是新来的使用javafx进行Android开发 我正在尝试使用 android 创建推送通知javafx javafxports 和 gluon Mobile 我的问题是推送通知没有按照我的预期显示 我的这个想法来自 http g
  • 通过 bash 脚本询问 MongoDB 是否是 Master

    我的 mongodb 应该每天运行一次备份 它由一个主设备和两个从设备运行 我需要备份其中一个 因为它们只是副本 最简单的方法是仅在一个实例上运行备份脚本 但如果这个实例宕机了怎么办 因此 我认为在主服务器上运行备份脚本会很好 因为即使其他
  • JavaScript 事件委托 - 行为

    我正在尝试创建网页 为了提高性能 我决定使用事件委托 而不是直接绑定 但我遇到了事件委托的奇怪行为 或者我错过了一些东西 这是我的 HTML 结构 div section class myClass h1 Heading 1 h1 p So
  • Matplotlib 根据值使用不同颜色的条形图

    我正在绘制各个行业及其所有股票的回报 我希望值 gt 100 为绿色 sector lst XLK XLF XLE etc for i in sector lst fig plt figure figsize 12 8 for x in s
  • 在Python中确定特定数字的精度和小数位数

    我在 Python 中有一个包含浮点数的变量 例如num 24654 123 并且我想确定数字的精度和小数位数 在 Oracle 意义上 因此 123 45678 应该给我 8 5 12 76 应该给我 4 2 等等 我首先考虑使用字符串表
  • 如何制作像 Timely 这样漂亮又时尚的应用程序

    谷歌在设计方面的引用 以及一些应用程序示例 基于什么Google说在http developer android com http developer android com 在设计部分 开发人员应考虑三个目标 让我着迷 简化我的生活 让我
  • python networkx:如何获取随机路径?

    在networkx中有这样一个函数 nx all simple paths G source 0 target 5 它返回所有路径 但如果有很多可能的路径 它会工作很长时间 如何立即获得任意路径 它不产生all路径 它返回一个生成器 该生成
  • GCC 中的 C 函数对齐

    我正在尝试使用 aligned 16 属性将函数字节对齐到 16 字节边界 我做了以下事情 void attribute aligned 16 function 来源 http gcc gnu org onlinedocs gcc Func
  • 在箱线图中组合两个数据帧的信息

    我有两个通过转换 numpy 数组获得的数据帧 df1 和 df2 每个数据帧都有以下数据 data1 data2 datan indicator 0 2 482738 0 484757 1 344557 a 1 4 566902 1 33
  • 组合多个谓词

    c NET 2 0 有什么办法吗 组合多个谓词 假设我有以下代码 List
  • PHP 中的“finally”关键字的作用是什么?

    考虑这两个例子 and