2011-01-27 3 views
3

После example with custom exception handling в Grails, я пришел к следующему коду:Пользовательского Grails обработка исключений

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

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

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

ответ

7

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

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

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

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

Любопытно, что это требование?

+0

Я попробовал это так, но это все исключения обрабатываются java.lang. Обработчик исключений. – deamon

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