【发布时间】:2011-01-11 11:27:34
【问题描述】:
我正在尝试从此页面运行此示例 #1:http://php.net/manual/en/language.exceptions.php
<?php
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo "Hello World\n";
?>
但是,我得到的不是所需的输出:
0.2
Fatal error: Uncaught exception 'Exception' with message 'Division by zero.'
in xxx:
7 Stack trace: #0 xxx(14): inverse(0) #1 {main} thrown in xxx on line 7
我使用的开发环境是UniServer 3.5 和PHP 5.2.3
【问题讨论】:
-
你能告诉我们你的代码吗?获得此错误的唯一错误是捕获错误的异常(或没有异常)。
-
代码完全相同(我刚刚添加了一些换行符)......无论如何,我再次将代码复制到测试文件中,这里是相同的错误消息:0.2 致命错误:未捕获的异常'异常”,带有消息“除以零”。在 W:\www\test.php:4 堆栈跟踪:#0 W:\www\test.php(11): inverse(0) #1 {main} 在第 4 行的 W:\www\test.php 中抛出我真的不知道那里发生了什么......也许是错误的 PHP 配置?
-
一些较旧的扩展版本导致异常处理问题。 5.2.3 是旧的,错误背后可能有一个错误。你能升级PHP吗? UniServer 3.5 也很旧,考虑到当前的生产版本是 5.5。 3.5 是错字吗?
-
查看 UniServer 发布信息 (wiki.uniformserver.com/index.php/…),3.5 显然不是错字。升级到 UniServer 5.5 并再次尝试示例代码。
-
outis,感谢您的提示 :)。这就是我当时所做的——切换到 XAMPP(不喜欢新版本的 UniServer)。 3.5 不是错字,但服务器对我来说工作得很好,所以我从不费心升级它。
标签: php