php异常-throw/catch不能跨循环工作


php exceptions - throw/catch not working across loops

这应该是有效的。请告诉我我做错了什么。

这是代码:

<?php
try {
  echo "start";
  throw new Exception("test");
  for ($index=0; $index < 1; $index++) {
    echo "loop";
  }
} catch ( Exception $e ){
  echo "caught $e";
}
?>

我遇到了一个未被发现的例外,如果我在循环内投球,效果很好,但这违背了我的目的。我可以在不同的try/catch块中进行破解,但这很难。

我在5.2.13和5.2.17服务器上尝试过。目前的生产版本是5.2.17,不,我还没有在5.3.8上测试过它,因为我必须和我的主机一起升级,并重新测试很多代码。

有爱吗?

p.S。我知道异常和未捕获的异常之间的区别。但结果是:

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

正如landons所建议的,是eAccelerator的"优化"优化了我的接球盖帽。一旦我禁用了eAccelerator,它就会按预期工作。

为什么要回显$e对象?试试这个:

try {
    throw new Exception("test");
    for ($index=0; $index < 1; $index++) {
        echo "loop";
    }
} catch ( Exception $e ){
    echo $e->getMessage();
}