Пользовательская обработка исключений Grails - PullRequest
3 голосов
/ 27 января 2011

Следуя примеру с пользовательской обработкой исключений в Grails, я пришел к следующему коду:

exceptionHandler.exceptionMappings = [
    'my.project.AccessDeniedException': '/accessDenied',
    'my.project.NoSessionException' : '/accessDenied',
    'java.lang.Exception': '/errorProduction'
]

Это прекрасно работает для первых двух типов исключений, но все другие исключения, такие как GroovyPagesException , больше не обрабатываются Grails, они обрабатываются контейнером сервлета.

Как я могу обработать все исключения с Grails (1.3)?

Ответы [ 2 ]

7 голосов
/ 27 января 2011

Это работает:

UrlMappings.groovy:

"500"(controller: 'errors', action: 'handle')

И контроллер:

class ErrorsController {

    def handle = {
        def exception = request.exception.cause.class
        if(exception == my.project.NoSessionException ||
               exception == my.project.AccessDeniedException)
            render(view: '/accessDenied')
        else
            render(view: '/errorProduction')
    }

}
1 голос
/ 27 января 2011

Не хотите ли вы вспомнить страницу с ошибкой 500 для таких ошибок? Я использовал конфигурацию UrlMappings для переопределения определенных типов ошибок с помощью пользовательских страниц.

  "500"(controller: "error", action: "cartGone", exception: CartGoneException)    

Любопытно, что за требование здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...