我正在尝试在 Grails 代码抛出任何未处理的异常后实现简单的自定义错误页面。我已将 500 映射到我的 Controller :
"500" (
controller: "error",
action: "serverError"
)
并在 Controller 中处理异常:
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”操作只是一个简单的 View ,默认呈现 GSP 页面的静态内容——信息和点击重定向窗口。 该页面有(我希望)正确的序言:
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page isErrorPage="true" %>
现在,当通过 NetBeans (Jetty) 在本地测试它时,它一切正常并显示错误消息页面;当部署到测试环境(Tomcat6)时,显示 Tomcat 堆栈跟踪。
如何防止显示此 Tomcat 堆栈跟踪?我有两个想法——第一,我没有真正正确地转储(处理?)异常,所以它冒泡到 Tomcat——第二,Tomcat 设置了一些配置值,所以它无论如何都会显示堆栈跟踪。
请,如果您对此有任何想法,请告诉我。花大约 5 个小时来解决这个问题...... :-/
谢谢!
最佳答案
定义错误 = { def exception = request['javax.servlet.error.exception']?.cause?.cause 如果(异常){
}
}
关于tomcat - Grails 自定义错误页面 (500) 和 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990173/