试试Catch不工作?

时间:2013-02-23 03:31:55

标签: php

我不能让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(),但我只是设法删除警告或显示它,但是“Caught exception ...”永远不会显示。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

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

有关Exceptions如何工作以及如何捕获它们的大量示例,请参阅the docs on exceptions,包括一个模仿您正在寻找的功能的示例:

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.