php例外 - throw / catch不能在循环中工作

时间:2012-01-10 01:33:32

标签: php exception-handling php-5.2

这应该如此有用。请告诉我,我做错了。

以下是代码:

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

我得到了一个未被捕获的异常,如果我在循环中移动它可以正常工作,但这会失败我的目的。我可以破解单独的try / catch块,但那是hackish。

我在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

2 个答案:

答案 0 :(得分:0)

正如Landons所说,eAccelerator的“优化”优化了我的捕获块。一旦我禁用了eAccelerator,它就会按预期工作。

答案 1 :(得分:-1)

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

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