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
}
Обратите внимание, что я написал // Do nothing
потому что кажется, что если выдается ошибка, Apache записывает ее в error_log
в любом случае, пойман ли он или нет. То, что я хочу сделать, это отключить это поведение, а не записывать в журнал ошибок.
Да, вы можете изменить уровень сообщений об ошибках в любое время во время выполнения вашей программы, и он останется на этом новом уровне, пока вы не измените его снова. Вы Можно «тишина» только в определенных частях. Обратите внимание, что 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
,
Других решений пока нет …