1

我有一个 Servlet。

public class MyServlet extends HttpServlet
{
   protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
    {
       try
       {
        CallSomeMethodInBean();
       }
       catch(Exception e)
       {
       //What to do here?
       }
    }
}

在我的 Bean 中,我有CallSomeMethodInBean()方法

public String CallSomeMethodInBean() throws Exception
{
 try
  {
    //Try something
  }
  catch(Throwable e)
  {
    throw new Exception(e);
  } 
}

在我的 中,如果抛出web.xml,我已经配置了错误页面。java.lang.Exception

<error-page>
   <exception-type>javax.lang.Exception</exception-type>
   <location>/WEB-INF/pages/errorPage.jsp</location>
 </error-page>

由于doPost()方法是调用CallSomeMethodInBean()抛出异常的方法,我需要CallSomeMethodInBean用块包围方法try catch并需要捕获异常。

CallSomeMethodInBeanbean 中 抛出的任何异常都是通过web.xml配置处理的。那么,我应该在doPost()方法中处理什么?只是打印一条日志消息?

4

2 回答 2

1

在这种情况下,我会重新考虑你的 bean。捕获 Throwable 意味着“我可以处理任何问题”,但是您的异常处理代码只是将 Throwable 包装到已检查的异常中。也就是说,所有其他想要使用您的 bean 的组件都必须包装它的 try-catch 代码。如果您无法处理 bean 中的已检查异常,请考虑将它们包装到运行时异常中并重新抛出它们。

例外应该只用于特殊情况。捕获 Throwable 并声明“抛出异常”被认为是一种不好的做法。只声明那些可以有意义地处理的异常。只捕获那些您知道如何处理它们的异常。

于 2013-10-11T09:30:23.070 回答
0

如果在这种情况下您不需要一些特定的错误处理(例如修复对象状态等)并且显示的错误页面对您来说已经足够了,只需重新抛出它,或者捕获并忽略它。

于 2013-10-11T05:29:06.487 回答