在我的rails应用程序中,每当发生意外错误时我都会移植到grails,我会自动拦截错误并向用户显示一个表单,通知他们发生了错误并要求他们提供更多信息。同时,在呈现表单时,我编写了堆栈跟踪以及有关谁登录到数据库表的其他信息。然后,如果表单已提交,我将该信息添加到错误报告中。
我无法从exceptionHandler文档和BootStrap示例中判断出是否允许我获取包括各种会话和请求参数在内的所有信息,然后将它们填入数据库然后发布表单。
有什么想法吗?
答案 0 :(得分:1)
您可以使用控制器处理异常,而不是直接转到error.gsp,方法是更改grails-app / conf / UrlMappings.groovy中的“500”代码映射
"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
}
}
}
由于您现在处于控制器中,您可以访问请求等,并执行您喜欢的任何数据库或其他后期处理工作。