繁体   English   中英

您如何处理/记录Java MVC Web应用程序中的错误?

[英]How do you handle/log errors in a Java MVC web application?

我目前正在使用一个非常简单的MVC框架Bear Bibeault的Front Man ,对于不熟悉的 ,它与Spring MVC非常相似(至少在概念上)。 我遇到的问题之一是如何正确处理异常。

我目前正在做这样的事情,

try {
    //do something
}catch (Exception ex) {
    logger.error("Logging error", ex);
    Map model = new HashMap();
    model.put("error", ex.getLocalizedMessage());
    cc.setScopedVariable("model", model);
    cc.forwardToView(ERROR_VIEW);
}

本质上,我记录了异常,然后转发到错误视图页面。

但是,这让我感到震惊,因为它不是正确的方法。 这会导致很多样板代码不是很干。

在Web应用程序中处理/记录异常的更好方法是什么?

您可以在错误的JSP文件中进行所有日志记录。

将此添加到您的web.xml文件。

<error-page> 
<exception-type>java.lang.Throwable</exception-type> 
<location>/error.jsp</location> 
</error-page>

在您的jsp文件中添加

<%@page isErrorPage="true" %>

然后,您可以将日志记录放入<% %>并同时显示错误。 您所有的日志记录逻辑都将放在一个地方,并且您的代码将开始看起来更简洁。


您可以将位置指向servlet,而不是在JSP文件中使用scriptlet。 Servlet可以处理您的所有处理,然后转发到JSP页面。

您还可以将这种技术用于不同的异常,因此可以对异常进行不同的处理。

异常的种类繁多,因此您首先应该确定要如何向用户显示它们。 将它们转发到页面以显示错误可能不是它们遇到的所有错误的最佳选择,并且切记在没有上下文的情况下显示错误可能会使某些最终用户感到困惑。

处理该错误的一种方法是记录所有非关键错误,并在网站上有一个用户可以访问和查看它们的位置。 (我在一个项目中进行了类似的工作。用户可以查看不会阻止应用程序继续执行的警告和错误。)

您可以将它们返回到发生错误的页面,然后在其中填充错误消息。 AJAX / Comet可用于向用户显示实时错误,而无需将其从发生错误的页面移开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM