2017-02-15 5 views
2

Я прочитал официальный документ PlayFramework об обработке ошибок. И я узнал, что полезно использовать класс HttpErrorHandler. И они говорят, что такие классы обработки ошибок могут ловить ошибки или исключения из Action. И я видел методы класса DefaultHttpErrorHandler. Однако как класс DefaultHttpErrorHandler различает ошибки или исключения, отбрасываемые с Action? Некоторый метод, такой как onServerError, принимает аргумент int как его параметр, поэтому в этом случае как Action выдают ошибки или исключения? Показывает ли другая страница?Как выбросить ошибки или исключения из Action в Play?

+0

Какая игра! версия вы говорите? –

+0

Обычно последняя версия. Этот вопрос идет с настоящим официальным документом. –

ответ

0

В принципе, исключение, созданное в контроллере, будет вызвано кодом ошибки 500 http. Метод onServerError поймает и обработает это исключение.

С другой стороны, коды ошибок, 400, 401, 403 или 404 http называются «Ошибка клиента» в Play environment. Эти ошибки ловутся и обрабатываются методом onClientError.

Таким образом, если вы хотите иметь специальную и настроенную страницу для страницы ошибок 404 http («Страница не найдена»), создайте данное представление и вызовите его внутри метода onClientError (у вас есть параметр statusCode для разных 404 из 400, 401 или другой код статуса http).

Если вы хотите создать собственную страницу с ошибкой, вы должны вызвать выделенный вид в методе onServerError.

+0

Об ошибках на стороне сервера, я могу понять. Однако, в терминах «Ошибка клиента», я не уверен. Например, если у пользователя есть доступ к странице, которая не существует, обычно мы должны ответить кодом статуса 404. В то же время, если клиент имеет доступ к странице, которая не разрешена, мы должны ответить на код статуса 403. Играет ли различная ситуация в разных ситуациях без каких-либо настроек? –

+0

Обратите внимание, что существует разница между тем, что вы возвращаете результат 404 в действие (т. Е. Был маршрут, который ведет к этому действию пользователя), и пользователь, получающий доступ к чему-то, для которого нет маршрута. Только в последнем случае используется обработчик ошибок. Что касается 403-х годов, то как играть будет знать, имеет ли пользователь доступ к определенному ресурсу? Этот случай зависит от того, как вы выполняете авторизацию. – rethab

+0

Благодарим вас за ответ. Но я имею в виду, если у нас есть некоторые ошибки клиента, которые мы хотим четко различать, как мы должны реализовывать? В Play я узнал, что мы можем обрабатывать ошибки, используя класс HttpErrorHandler. Однако в некоторых случаях нам может потребоваться подготовить различные методы обработки ошибок к различным ошибкам. –

 Смежные вопросы

  • Нет связанных вопросов^_^