是否可以仅为部分脚本禁用错误报告?

时间:2016-10-27 08:29:26

标签: php error-handling error-logging

PHP文档reads(强调我的):

  

error_reporting()函数将error_reporting指令设置为   运行。 PHP有很多级别的错误,使用此函数设置   脚本持续时间(运行时)的级别。如果是可选级别   未设置,error_reporting()将只返回当前错误   报告水平。

这是否意味着错误报告的级别只能在PHP脚本中设置一次,之后不会更改?例如,是否可以这样做:

error_reporting(0);

try {
  errorSilently();
} catch (Exception $e) {
  // Do nothing
}

error_reporting(E_ALL);

try {
  errorLOUDLY();
} catch (Exception $e) {
  // Do nothing
}

请注意,我写了一个// Do nothing,因为似乎如果抛出错误,Apache会以任何方式将其写入error_log,如果它被捕获或未被捕获。我想要做的是禁用该行为,而不是写入错误日志。

1 个答案:

答案 0 :(得分:7)

是的,您可以在程序运行期间随时更改错误报告级别,并且在您再次更改之前它将保持在新级别。你只能“沉默”特定的部分。请注意,error_reporting()会返回级别,特别是您可以执行以下操作:

$previous = error_reporting(0);

something_which_produces_warnings_which_can_safely_be_ignored();

error_reporting($previous);

要暂时停用错误记录,您可能需要ini_set('log_errors', false)

不,try..catch错误报告无关。这些是不同的机制。 error_reporting会影响trigger_error触发的错误; try..catch是一种处理通过throw抛出的异常的机制。