如何处理Java Web应用程序中的异常?

时间:2011-04-06 11:00:44

标签: java jsp exception servlets java-ee

我想以警告用户发生错误的方式处理我的例外情况。

我所知道的是:

servlet.java
private void registerUser(...){
    ...
    try{
        DAOUser daoUser = new DAOUser();
        daoUser.insert(user);
    catch(HibernateException he){
        ...
    }

DAOUser.java
public void insert(User user) throws HibernateException {
  ...
}

这是最好的方法吗?如果没有,你会建议什么?

祝你好运, Valter Henrique。

2 个答案:

答案 0 :(得分:7)

可以通过不同方式处理异常。在这种情况下,似乎异常导致用户通知或错误消息。

现在,您显示的示例不应该抛出您需要通知用户的任何异常。首先,验证用户输入,不要使用异常使程序流程。

好吧,我们需要通过一些消息通知用户。这可以在控制器中使用存储在属性文件中的消息来完成,通常是。

您必须知道捕获异常的位置,丢弃位置以及记录位置。在这里,我首先要建议的是不要同时做两件事,抛出和记录。如果您认为记录是合适的,请不要抛出它。如果您认为投掷是合适的,那么请不要记录它。如果按照这种方式,您将自动知道需要记录哪一个以及要抛出哪一个。这并不意味着一些例外会在没有记录的情况下消失。不进一步抛出的方法,有责任记录它。

另一件事是知道在哪里使用已检查的异常以及在何处使用运行时。根据说,抛出运行时异常的方法更容易使用。但这并不意味着您应该始终使用运行时异常。嗯,这也取决于。

我希望你明白我的观点。

答案 1 :(得分:2)

好的方法是

  • 首先隔离服务/ DAO /控制器/查看图层。
  • 从服务中抛出异常,在控制器中处理它并相应地执行它。

Our servlet wiki page很好地展示了错误消息