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
,如果它被捕获或未被捕获。我想要做的是禁用该行为,而不是写入错误日志。
答案 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
抛出的异常的机制。