Grails控制器中的异常处理与Grails 2.2.4最佳实践中的ExceptionMapper

Grails控制器中的异常处理与Grails 2.2.4最佳实践中的ExceptionMapper,exception,grails,exception-handling,controller,Exception,Grails,Exception Handling,Controller,在Grails 2.2.4中处理异常时,使用此处报告的方案: 提出了一个例外情况: groovy.lang.MissingPropertyException: No such property: ExceptionMapper for class: ErrorController 用于一般处理控制器异常的grails机制是如何工作的 建议的代码是Grails中的最佳实践/推荐方法?您从另一个问题复制了一些代码,但它使用了一个ExceptionMapper类,该类不是Groovy或Grails

在Grails 2.2.4中处理异常时,使用此处报告的方案:

提出了一个例外情况:

groovy.lang.MissingPropertyException: No such property: ExceptionMapper for class: ErrorController
用于一般处理控制器异常的grails机制是如何工作的


建议的代码是Grails中的最佳实践/推荐方法?

您从另一个问题复制了一些代码,但它使用了一个
ExceptionMapper
类,该类不是Groovy或Grails的一部分(如果是这样的话,您需要一个import语句),并且没有在答案中定义。我不确定它是做什么的,但像这样的东西应该有用:

def exception = request.exception.cause
response.status = 500
render(view: "/error", model: [exception: exception])

您从另一个问题复制了一些代码,但它使用了一个
ExceptionMapper
类,该类不是Groovy或Grails的一部分(如果是这样的话,您需要一个import语句),并且没有在答案中定义。我不确定它是做什么的,但像这样的东西应该有用:

def exception = request.exception.cause
response.status = 500
render(view: "/error", model: [exception: exception])

有许多帖子指向通过转发到视图来抛出和处理错误的旧方法。 对于Grails 2.3.0,最佳实践是遵循声明性异常处理方法:

Grails控制器支持一种简单的声明性异常处理机制。如果控制器声明了一个接受单个参数的方法,且参数类型为java.lang.Exception或java.lang.Exception的某个子类,则该控制器中的某个操作引发该类型的异常时,将随时调用该方法

class ElloController  {
def index() { 
    def message="Resource was not found"
    throw new NotFoundException(message);
}

def handleNotFoundExceptio(NotFoundException e) {
    response.status=404
    render ("error found")
}

异常处理的方法可以在trait中移动,并为您想要的任何控制器实现。如果从服务抛出错误,则可以在调用该服务的控制器中跟踪该错误。一篇描述

的文章有许多帖子指向通过转发到视图来抛出和处理错误的旧方法。 对于Grails 2.3.0,最佳实践是遵循声明性异常处理方法:

Grails控制器支持一种简单的声明性异常处理机制。如果控制器声明了一个接受单个参数的方法,且参数类型为java.lang.Exception或java.lang.Exception的某个子类,则该控制器中的某个操作引发该类型的异常时,将随时调用该方法

class ElloController  {
def index() { 
    def message="Resource was not found"
    throw new NotFoundException(message);
}

def handleNotFoundExceptio(NotFoundException e) {
    response.status=404
    render ("error found")
}

异常处理的方法可以在trait中移动,并为您想要的任何控制器实现。如果从服务抛出错误,则可以在调用该服务的控制器中跟踪该错误。在一篇描述

的文章中,请解释关于该问题需要更改的内容,或者为什么不适合堆栈溢出。谢谢这个评论是对未来读者的一个警告,我要求他们在投票否决之前(如果可能的话)告诉我如何改进。我希望我的问题会有用。你应该更乐观:)对于反对票,请解释关于这个问题需要改变什么,或者为什么它不适合堆栈溢出。谢谢这个评论是对未来读者的一个警告,我要求他们在投票否决之前(如果可能的话)告诉我如何改进。我希望我的问题会有用。你应该更乐观一些:)谢谢,我认为
exceptionapper
是Grails的一部分,不需要导入它。我会简单地尝试一下你的建议。谢谢,我认为
ExceptionMapper
是Grails的一部分,不需要导入它。我将简要地试试你的建议。