我不能让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 ...”永远不会显示。
我做错了什么?
答案 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.