tomcat - Grails 自定义错误页面 (500) 和 Tomcat

标签 tomcat grails exception

我正在尝试在 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/

相关文章:

tomcat - 读取部署在tomcat上的web.xml文件中的主机名

validation - grails字段插件: “blank”错误的处理方式与其他方式不同吗?

javascript - 如何检查 Node js应用程序中请求url参数是否不为空?

渲染期间引发的 Android Studio 异常

java - 译文从何而来? Java servlet、tomcat 和 Ext-Js Sencha 应用程序

java - 失败 - 在 tomcat7 : War file "WhitePagesAddressLookup.war" cannot be uploaded if context is defined in server. xml 中出现错误

html - 样式表未发送到浏览器

rest - 在 Intellij IDEA 中运行时,Grails 2.5.1 Restful Controller spock 单元测试失败并显示 406

Grails Spring 安全插件 : logout not working

python - 是否可以声明一个不带参数的函数,然后将一些参数传递给该函数而不引发异常?