Обработка ошибок
Прежде чем приступить к активной разработке приложения, стоит озаботиться уровнем и обработкой возможных ошибок сервера. Самая популярная - 404 Not Found (страница не найдена). Возникает тогда, когда в адресной строке неверно набран URL страницы. Дабы не пугать пользователя, а наоборот, мягко ему намекнуть, что он ошибся, в таком случае показывают специальную страницу с объяснениями и необходимыми ссылками.
Как организовать саму стрницу - отдельная тема, мы её рассматривать не будем. А как задействовать этот функционал в фреймворке - рассмотрим.
По умолчанию обработка 404 в фреймворке отключена. На неверный URL он ответит ошибкой интерпретатора уровня Warning, что не найден контроллер или экшен. Но если включить опцию
'abc_404' в секции
'errors' любого конфигурационнного файла:
1
2
3
4
5
'errors' => [
'abc_404' => true,
],
то вместо ошибки будет показана такая картинка:
А если вместо
true указать путь до шаблона страницы 404.html, то будет показан этот шаблон.
Важно! Путь нужно указать полный, от корня. Если нужно универсальное решение, стоит сделать так же,
как с шаблонами:
1
2
3
4
5
6
7
'errors' => [
'abc_404' => dirname(dirname(__DIR__))
.'/'. basename(dirname(__DIR__))
.'/theme/tpl/404.tpl'
],
Примерно та же картина и с ошибкой 500 Internal Server Error (ошибка сервера). Если включить опцию
'abc_500', либо указать в ней путь до шаблона, то ошибки будут красиво завуалированы:
1
2
3
4
5
6
'errors' => [
'abc_404' => true,
'abc_500' => true,
],
Еще в этой секции можно выставить общий уровень обработки ошибок, и уровень реагирования страницей 500:
1
2
3
4
5
6
7
8
'errors' => [
'error_reporting' => E_ALL, // Общий уровень ошибок
'level_500' => E_ALL & ~E_NOTICE, // Уровень, на который будет выдана страница 500
'abc_404' => true,
'abc_500' => true,
],
Стоит отметить, что у опции
'abc_500' приоритет перед дебаггингом. Если она включена,
дебаггер работать не будет.