PHP 如何捕获 Catchable fatal error?

2020-03-12 16:54:34 +08:00
 myd

执行 N 个任务,执行任务可能报错,如果报错则执行下一个。

<?php
error_reporting(E_ALL);
ini_set("display_errors", "On");


for ($i = 0; $i < 5; $i++) {
    try {
        task($i);
    } catch (Exception|Error $exception) {
        echo "执行失败,下一个";
        continue;
    }
}


function task($task_id)
{
    echo "执行任务 $task_id";
    if ($task_id == 2) {
        echo new stdClass();
    }
    echo " 成功\n";
}

期望结果:

执行任务 0 成功
执行任务 1 成功
执行任务 2 执行失败,下一个
执行任务 3 成功
执行任务 4 成功

实际上执行结果:

执行任务 0 成功
执行任务 1 成功
执行任务 2
Catchable fatal error: Object of class stdClass could not be converted to string

执行任务 2 时,提示 Catchable fatal error。如何捕获这个错误?

2833 次点击
所在节点    PHP
3 条回复
Littlesqx
2020-03-12 17:17:16 +08:00
myd
2020-03-12 17:27:54 +08:00
@Littlesqx 非常感谢
dilu
2020-03-13 09:08:32 +08:00
1L 正解 还可以全局捕获异常等等

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652231

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX