自定义Grails异常处理

时间:2011-01-27 15:04:58

标签: java exception grails exception-handling groovy

在Grails中example with custom exception handling后,我看到了以下代码:

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

这适用于前两种类型的异常,但所有其他异常,如GroovyPagesException,不再由Grails处理,它们由servlet容器处理。

如何使用Grails(1.3)处理所有异常?

2 个答案:

答案 0 :(得分: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 :(得分:1)

您是否想要针对此类错误显示500错误页面?我使用了UrlMappings配置来覆盖自定义页面的某些错误。

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

好奇这里的要求是什么?