0

这应该可以。请告诉我我做错了什么。

这是代码:

<?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 上测试它,因为我必须和我的主机一起升级,并重新测试很多代码。

有爱吗?

PS我确实知道异常和未捕获异常之间的区别。但结果如下:

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
4

2 回答 2

0

正如landons 建议的那样,是eAccelerator 的“优化”优化了我的catch block。一旦我禁用了 eAccelerator,它就会按预期工作。

于 2012-01-10T23:53:23.917 回答
-1

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

try {
    throw new Exception("test");
    for ($index=0; $index < 1; $index++) {
        echo "loop";
    }
} catch ( Exception $e ){
    echo $e->getMessage();
}
于 2012-01-10T02:43:50.670 回答