Обработка ошибок


Прежде чем приступить к активной разработке приложения, стоит озаботиться уровнем и обработкой возможных ошибок сервера. Самая популярная - 404 Not Found (страница не найдена). Возникает тогда, когда в адресной строке неверно набран URL страницы. Дабы не пугать пользователя, а наоборот, мягко ему намекнуть, что он ошибся, в таком случае показывают специальную страницу с объяснениями и необходимыми ссылками.

Как организовать саму стрницу - отдельная тема, мы её рассматривать не будем. А как задействовать этот функционал в фреймворке - рассмотрим.

По умолчанию обработка 404 в фреймворке отключена. На неверный URL он ответит ошибкой интерпретатора уровня Warning, что не найден контроллер или экшен. Но если включить опцию 'abc_404' в секции 'errors' любого конфигурационнного файла:
1
2
3
4
5

                
'errors' => [ 
                                
'abc_404'          => true,
                ], 




то вместо ошибки будет показана такая картинка:



А если вместо true указать путь до шаблона страницы 404.html, то будет показан он.

Примерно та же картина и с ошибкой 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' приоритет перед дебаггингом. Если она включена, дебаггер работать не будет.