1

我不能try工作。我试过这个:

try {
    echo 1/0;
    } catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    }

导致错误:

Warning: Division by zero in /var/www/vhosts/saliganando.com/webs/momemi/apis/interpret-bot.php on line 6 

我尝试修改 error_reporting() 和 ini_set() 但我只设法删除警告或显示它,但从未显示“捕获异常...”。

我究竟做错了什么?

4

1 回答 1

4

该代码永远不会产生异常。它会生成警告。您需要在错误处理程序(使用set_error_handler())中捕获警告以处理该错误。

有关异常如何工作以及如何捕获它们的大量示例,请参阅有关异常的文档,其中包括模仿您正在寻找的功能的示例:

function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    else return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

生成:

0.2
Caught exception: Division by zero.
于 2013-02-23T03:32:38.953 回答