V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
myd
V2EX  ›  PHP

PHP 如何捕获 Catchable fatal error?

  •  1
     
  •   myd · 2020-03-12 16:54:34 +08:00 · 2856 次点击
    这是一个创建于 1744 天前的主题,其中的信息可能已经有所发展或是发生改变。

    执行 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。如何捕获这个错误?

    3 条回复    2020-03-13 09:08:32 +08:00
    Littlesqx
        1
    Littlesqx  
       2020-03-12 17:17:16 +08:00   ❤️ 2
    myd
        2
    myd  
    OP
       2020-03-12 17:27:54 +08:00
    @Littlesqx 非常感谢
    dilu
        3
    dilu  
       2020-03-13 09:08:32 +08:00
    1L 正解 还可以全局捕获异常等等
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1833 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:19 · PVG 00:19 · LAX 08:19 · JFK 11:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.