2011-01-27 40 views
3

繼Grails的一個example with custom exception handling,我來到了下面的代碼:定製Grails的異常處理

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

也能正常工作的前兩個類型的異常,但所有其他異常,如GroovyPagesException,不被處理Grails了,它們由servlet容器處理。

如何處理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 2011-01-27 15:39:53