在调用方法中检索自定义异常消息

时间:2012-06-20 09:50:29

标签: java jsp spring-mvc

我故意在DAO方法中将email设置为null。在DAO类的persist方法中转到Exception块,我在自定义异常类中输入自定义错误消息“无法添加Employee”; 如何在controller.In控制器异常块中捕获该错误消息如果我使用e.getMessage()我正在获取整个消息,但我只想要自定义错误消息。

呼叫方法(控制器)


try {                  
    employeeDao.persist(employees);
}  
catch (SpringUtilException ex) {    
    System.out.println("..at line 87......."+ex.getErrorMessage());
}
catch (Exception e) {
    System.err.println("Exception returned message: " + e.getMessage());
}

被叫方法(DAO)


public void persist(Employees employee) throws SpringUtilException {
    try {
        employee.setEmail(null);
        em.persist(employee);
    } 
    catch (EntityExistsException e) {
        throw new SpringUtilException(e, "Employee Duplicate");
    } 
    catch (Exception ex) {
        System.out.println("at line 31 in DAO..");
        throw new SpringUtilException("Failed to add Employee"); 
    }
}

1 个答案:

答案 0 :(得分:0)

em.persist()只会使一个瞬态实体持久化。它不会发出任何插入语句。

引发异常的insert语句在刷新时发出。当DAO方法已经返回时,在事务结束时完成刷新(在本例中)。

不要依赖数据库约束来验证您的对象。明确地验证它们,如果实体无效,甚至不要调用persist()。数据库约束是最后的手段检查。