Перехват исключений Symfony 2 во время загрузки

Я прочитал о событиях ядра в документации Symfony: http://symfony.com/doc/current/components/http_kernel.html

Это написано : As you've seen, you can create and attach event listeners to any of the events dispatched during the HttpKernel::handle() cycle

Нет проблем, чтобы сделать это, я могу создать пользовательский слушатель исключений и прослушивать события ядра.

Но как я могу отловить потенциальные ошибки во время загрузки (потому что никакие слушатели не вызываются):

public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
if (false === $this->booted) {
$this->boot(); // Error can be thrown
}

return $this->getHttpKernel()->handle($request, $type, $catch);
}

Я могу иметь такого рода ошибки, если я предоставляю неправильный доступ к базе данных (DriverException) например.

В режиме разработки это нормально, потому что у меня есть обработчик ошибок по умолчанию с DebugBundle но в производстве это белый экран.

Как я могу справиться с этим правильно?

1

Решение

Не нужно отлавливать ошибки на этапе загрузки внутри самого приложения.

В общем случае приложение не может перехватить все возможные ошибки. Например, не хватает памяти. Или PHP может быть разбит segfault и ни try/catch ни register_shutdown_function не поможет

Наиболее распространенным решением является обработка ошибок веб-сервером (Nginx, апаш, так далее). Если восходящий поток падает, веб-сервер получает 500 ответов и хорошо обрабатывает их, показывая удобное для пользователя сообщение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]