自定义Grails异常处理

dea*_*mon 3 java grails groovy exception-handling exception

下面是Grails中自定义异常处理示例,我得到了以下代码:

exceptionHandler.exceptionMappings = [
    'my.project.AccessDeniedException': '/accessDenied',
    'my.project.NoSessionException' : '/accessDenied',
    'java.lang.Exception': '/errorProduction'
]
Run Code Online (Sandbox Code Playgroud)

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

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

dea*_*mon 7

这有效:

UrlMappings.groovy:

"500"(controller: 'errors', action: 'handle')
Run Code Online (Sandbox Code Playgroud)

和控制器:

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')
    }

}
Run Code Online (Sandbox Code Playgroud)