Grails exceptionHandler能否支持以下错误处理流

Grails exceptionHandler能否支持以下错误处理流,grails,error-handling,Grails,Error Handling,在我正在移植到grails的rails应用程序中,每当发生意外错误时,我都会自动截获错误,并向用户显示一个表单,通知他们发生了错误,并询问他们更多信息。同时,在呈现表单时,我会写入堆栈跟踪以及有关谁登录到数据库表的其他信息。然后,如果提交了表单,我会将该信息添加到错误报告中 我无法从exceptionHandler文档和引导示例中判断这是否允许我获取所有信息,包括各种会话和请求参数,然后将它们填充到数据库中,然后发布表单 有什么想法吗?您可以使用控制器来处理异常,而不是直接转到error.gsp

在我正在移植到grails的rails应用程序中,每当发生意外错误时,我都会自动截获错误,并向用户显示一个表单,通知他们发生了错误,并询问他们更多信息。同时,在呈现表单时,我会写入堆栈跟踪以及有关谁登录到数据库表的其他信息。然后,如果提交了表单,我会将该信息添加到错误报告中

我无法从exceptionHandler文档和引导示例中判断这是否允许我获取所有信息,包括各种会话和请求参数,然后将它们填充到数据库中,然后发布表单


有什么想法吗?

您可以使用控制器来处理异常,而不是直接转到error.gsp,方法是从

"500"(view:'/error')

运行“grails创建控制器错误”并添加“错误”操作:

class ErrorsController {

   def error = {
      def exception = request['javax.servlet.error.exception']?.cause?.cause
      if (exception) {
         // handle exception
      }
   }
}

由于您现在在控制器中,您可以访问请求等,并执行任何您喜欢的数据库或其他后期处理工作。

您好,Burt,它会转到我想要的控制器,但请求中没有允许我查找原始错误的参数。这在Grails1.1.1中有效吗?对不起,这是针对1.2的。在1.2中,在执行的周围有一个额外的包装器——在1.1中,只有一个包装器。因此,删除第二个“.cause”,它将在1.1中起作用。
class ErrorsController {

   def error = {
      def exception = request['javax.servlet.error.exception']?.cause?.cause
      if (exception) {
         // handle exception
      }
   }
}