虽然处理异常Grails的2.2.4在这里报道的方案:
Grails中控制器的异常处理
class ErrorController {
def index() {
def exception = request.exception.cause
def message = ExceptionMapper.mapException(exception)
def status = message.status
response.status = status
render(view: "/error", model: [status: status, exception: exception])
}
}
将引发异常:
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])
有很多帖子指向投掷并转发到视图处理错误的老路。 使用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")
}
异常处理的方法可以在一个特质移动和任何你想要的控制器来实现。 如果错误是从服务抛出,它可以在它被调用服务的控制器来追踪。 文章描述了处理Grails的异常处理
文章来源: Exception handling in Grails controllers with ExceptionMapper in Grails 2.2.4 best practice