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

我无法从exceptionHandler文档和BootStrap示例中看出,是否可以让我获取所有信息,包括各种 session 和请求参数,然后将它们填充到数据库中,然后发布表单。

有什么想法吗?

请您参考如下方法:

您可以使用 Controller 来处理异常,而不是直接通过更改grails-app/conf/UrlMappings.groovy中的“500”代码映射直接进入error.gsp

"500"(view:'/error') 

至
"500"(controller: 'errors', action: 'error') 

运行'grails create-controller errors'并添加'error'操作:
class ErrorsController { 
 
   def error = { 
      def exception = request['javax.servlet.error.exception']?.cause?.cause 
      if (exception) { 
         // handle exception 
      } 
   } 
} 

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!