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

Bra*_*roy 2 php error-handling error-logging

PHP文档读取(强调我的):

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
}
Run Code Online (Sandbox Code Playgroud)

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

dec*_*eze 7

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

$previous = error_reporting(0);

something_which_produces_warnings_which_can_safely_be_ignored();

error_reporting($previous);
Run Code Online (Sandbox Code Playgroud)

要暂时禁用错误日志记录,您可能需要ini_set('log_errors', false).

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

  • OP:如果你在谈论致命错误,你就无法抓住它们.致命是致命的,没有办法解决这个问题 (2认同)