【发布时间】:2012-01-10 01:33:31
【问题描述】:
这应该可以。请告诉我我做错了什么。
代码如下:
<?php
try {
echo "start";
throw new Exception("test");
for ($index=0; $index < 1; $index++) {
echo "loop";
}
} catch ( Exception $e ){
echo "caught $e";
}
?>
我遇到了一个未捕获的异常,如果我将 throw 移到循环内它可以正常工作,但这违背了我的目的。我可以在单独的 try/catch 块中破解,但那是 hackish。
我已经在 5.2.13 和 5.2.17 服务器上尝试过。当前生产是 5.2.17,不,我还没有在 5.3.8 上测试它,因为我必须和我的主机一起升级,并重新测试很多代码。
有爱吗?
附: 我确实知道异常和未捕获异常之间的区别。但结果如下:
start
Fatal error: Uncaught exception 'Exception' with message 'test' in C:\UniServer\www\admin\water_ws\test.php:4 Stack trace: #0 {main} thrown in C:\UniServer\www\admin\water_ws\test.php on line 4
【问题讨论】:
-
似乎在viper7 (5.2.15RC3-dev) 和codepad (5.2.5) 上表现不错……你确定这里没有其他东西在起作用吗?您
echo $e(将异常转换为字符串)显示与未捕获案例类似的输出这一事实可能无济于事。 -
你能详细说明它是如何不工作的吗?它是打印“循环”而不是“捕获测试”吗?
-
OP 建议都不建议(未捕获的异常);但我认为
caught $e看起来很像Fatal error: Uncaught $e。 -
您是否有启用 eAccelerator 的机会? It 和其他操作码缓存经常存在有据可查的异常问题。
-
cbuckley - 不,我不确定是不是有别的东西在起作用,这是那些闻起来不对劲的 wtf 错误之一。但是将 Exception 转换为字符串是一条红鲱鱼。
标签: php exception-handling php-5.2