3
我們有一個自定義的錯誤控制程序,在我們發生所有錯誤後會被調用。然而,即使原始錯誤不是空指針,我們大多數拋出的錯誤最終都會作爲空指針進入控制器。有任何想法嗎?下面的代碼。 Bootstrap和UrlMappings可根據需要提供。由於Grails錯誤處理程序總是收到空指針
錯誤處理方法
def HandleErrors =
{
def exception = request.exception.cause.class
if (exception)
{
Exception ex = request.exception //This exception is always a NPE
...
的分組碼拋出異常。我原本在這裏沒有嘗試捕獲,但想要添加它,以便我確信拋出的異常不是NPE。它的文件沒有發現異常。
try{
def writer = new FileWriter(new File(fileSaveLocation));
}
catch (ex)
{
throw(ex)
}
編輯:添加是被推到了異常處理程序
Exception:org.codehaus.groovy.grails.web.errors.GrailsWrappedRuntimeException
Cause:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
我所做的變化和異常仍設置爲org.springframework.web.util.NestedServletException而不是零,所以它似乎不會無意中拋出/捕捉第二個異常。 – Joseph
在'HandleErrors'方法的頂部放置'grails.util.GrailsUtil.sanitize(request.exception))。printStackTrace()'是否將NPE的原因位置打印到控制檯? –
實際上,問題原來是BootStrap文件是如何設置的。我仍然不是100%,爲什麼它導致一個問題,因爲它看起來設置得很好,但從bootstrap中移除exceptionMappings解決了這個問題。如果我們將來需要有多個錯誤控制器,那麼我們將重新討論這個問題。儘管感謝您的幫助! – Joseph