【发布时间】:2011-02-28 17:31:30
【问题描述】:
我正在尝试在 Grails 代码引发任何未处理的异常之后实现简单的自定义错误页面。我已将 500 映射到我的控制器:
"500" (
controller: "error",
action: "serverError"
)
并在控制器中处理异常:
def serverError = {
try {
// first check, if some exception was reported
if (!request.exception) {
return
}
// send mail with stack trace if requested
if (shouldSendErrorReports) {
log.debug "Mail was sent out successfully..."
}
} catch (Throwable e) {
log.error "Error while reporting an error: " + e
}
// redirect to error message
redirect (
action: "errorMessage"
)
}
// lines omitted for clarity
“errorMessage”动作只是一个简单的视图,默认呈现带有静态内容的GSP页面——信息和点击重定向窗口。 该页面有(我希望)正确的序言:
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page isErrorPage="true" %>
现在,当通过 NetBeans (Jetty) 在本地测试时,一切正常,并显示 errorMessage 页面;部署到 TEST 环境 (Tomcat6) 时,会显示 Tomcat 堆栈跟踪。
如何防止显示此 Tomcat 堆栈跟踪?我有两个想法——首先,我没有真正正确地转储(处理?)异常,所以它冒泡到 Tomcat——其次,Tomcat 设置了一些配置值,所以它无论如何都会显示堆栈跟踪。
如果您对此有任何想法,请告诉我。花大约 5 个小时来解决这个问题... :-/
谢谢!
【问题讨论】:
标签: tomcat grails exception-handling