Exception Grails错误处理程序始终接收空指针

Exception Grails错误处理程序始终接收空指针,exception,grails,groovy,error-handling,Exception,Grails,Groovy,Error Handling,我们有一个自定义的错误控制器,在所有错误发生后调用它。然而,我们抛出的大多数错误最终都以空指针的形式进入控制器,即使原始错误不是空指针。有什么想法吗?代码如下。如果需要,可以使用引导和URL映射。谢谢 错误处理程序方法 def HandleErrors = { def exception = request.exception.cause.class if (exception) { Exception ex = request.excepti

我们有一个自定义的错误控制器,在所有错误发生后调用它。然而,我们抛出的大多数错误最终都以空指针的形式进入控制器,即使原始错误不是空指针。有什么想法吗?代码如下。如果需要,可以使用引导和URL映射。谢谢

错误处理程序方法

def HandleErrors =
{

    def exception = request.exception.cause.class  

    if (exception) 
    { 
        Exception ex = request.exception  //This exception is always a NPE
            ...
引发异常的代码块。我最初在这里没有一个try-catch,但想添加它,这样我就可以确定抛出的异常不是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

这并不是因为您在错误处理程序中引用的是null,因此无意中引发了另一个异常,该异常再次被捕获

你能试着换一下吗

def exception = request.exception.cause.class  


我做了更改,异常仍然设置为org.springframework.web.util.NestedServletException而不是null,因此它似乎不会无意中引发/捕获第二个异常在
HandleErrors
方法的顶部,将NPE的原因位置打印到控制台?实际上,问题是如何设置引导文件。我仍然不是100%知道它为什么会引起问题,因为在我看来它设置得很好,但是从引导中删除exceptionMappings修复了这个问题。如果我们将来需要多个错误控制器,那么我们将重新讨论这个问题。谢谢你的帮助!很高兴您找到了解决方案:-)
def exception = request?.exception?.cause?.class