PHP Exception显示在try&抓住了

时间:2013-02-05 17:19:17

标签: php exception-handling error-handling

我有一个非常奇怪的情况:下面显示的代码在PHP中不会出错。

try {
    throw new Exception('foo');
} catch(Exception $e) {
    // here could be some custom functions to handle errors
    die();
}

在我的电脑上打印

( ! ) SCREAM: Error suppression ignored for
( ! ) Exception: foo. in D:\wamp\www\index.php on line 4

为什么呢?哪个php ini选项可以做到这一点?

3 个答案:

答案 0 :(得分:5)

Scream扩展是针对开发人员的扩展,因此即使通常会被抑制,他们也可以从代码中看到错误消息。

xDebug是另一个开发人员扩展,它也包含相同的功能。

如果您有这些扩展中的任何一个,则可以在PHP配置中禁用Scream功能。

但是这些扩展都不应该在生产系统上使用 - 它们仅用于开发人员的系统。如果它在您的实际网站上,则应完全禁用该扩展程序。

答案 1 :(得分:1)

http://www.php.net/manual/en/scream.examples-simple.php

通常,scream用于覆盖静默运算符(@),但如果它用于try catch,那么...你可以尝试使用内联ini_set将其关闭并查看是否修复了它

答案 2 :(得分:1)

谢谢大家的回答。是的,问题是xdebug,更准确:xdebug.show_exception_trace选项。,已转为on

我们从xdebug documentation读到:

  

xdebug.show_exception_trace
  类型:整数,默认值:0
  当此设置设置为1时,Xdebug将在引发异常时显示堆栈跟踪 - 即使实际捕获到此异常。