Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在调用方法中检索自定义异常消息_Java_Jsp_Spring Mvc - Fatal编程技术网

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

Java 在调用方法中检索自定义异常消息,java,jsp,spring-mvc,Java,Jsp,Spring Mvc,我故意在DAO方法中将email设置为null。它进入DAO类中persist方法的异常块,在该异常块中,我将自定义错误消息“未能添加员工”放入自定义异常类中; 如何在控制器中捕获该错误消息。在控制器异常块中,如果我使用e.getMessage()将获取整个消息,但我只需要自定义错误消息 调用方法(控制器) 被调用方法(DAO) em.persist()。它不发出任何insert语句 insert语句是在刷新时发出的,它会导致出现异常。在事务结束时,当DAO方法已经返回时,就会完成刷新(在本

我故意在DAO方法中将email设置为null。它进入DAO类中persist方法的异常块,在该异常块中,我将自定义错误消息“未能添加员工”放入自定义异常类中; 如何在控制器中捕获该错误消息。在控制器异常块中,如果我使用e.getMessage()将获取整个消息,但我只需要自定义错误消息

调用方法(控制器)


被调用方法(DAO)


em.persist()。它不发出任何insert语句

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


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

您从何处获得SpringUtilException?显示了什么,您希望程序显示什么,SpringUtilException的代码是什么?它的普通自定义异常类。我发现它没有进入任何异常块,包括DAO方法中的异常块。我不知道它去哪里,但在控制器中它进入了异常块。尽管我在控制台中得到了下面的错误消息,但它没有进入任何错误异常使用JPA在数据库中插入数据[EL Fine]:2012-06-20 15:42:54.661--ClientSession(18324508)--连接(10989057)--插入员工(员工ID、电子邮件、名字、雇佣日期、工作ID、姓氏、工资、城市、州、邮编)值(?,,,,,,,,,,)绑定=>[277,null,ET,2011-11-11,AD_VP,ETE,11,null,null,null]不能将null插入(“HR”,“EMPLOYEES”,“EMAIL”)中,以停止捕获控制器中的异常,或者至少对异常调用e.printStackTrace(),以了解引发的异常。然后显示堆栈跟踪。和getErrorMessage()不是标准的异常方法,因此无法猜测它可以做什么。要再次测试,请将employee设置为null,此时在控制台中打印第25行和第33行。为什么在Controller.System.out.println(“在DAO中的第25行”);employee=null;em.persist(employee)中它将进入异常块而不是SpringUtilException块;System.out.println(“在DAO中的第28行”);}catch(EntityExistsException e){System.out.println(“在DAO中的第30行”);抛出新的SpringUtilException(e,“员工副本”);}catch(异常ex){System.out.println(“在DAO中的第33行”);抛出新的SpringUtilException(“添加员工失败”);}已经有两次要求您发布异常的堆栈跟踪。我已经解释了为什么我的答案中没有SpringUtilException。请阅读答案和注释,而不要忽略它们。在DAO的第25行..在DAO的第33行..错误:org.springframework.transaction.interceptor.TransactionInterceptor-覆盖应用程序异常n通过com.kesava.tutorial.util.SpringUtilException提交异常com.kesava.tutorial.dao.EmployeeDAO.persist(EmployeeDAO.java:38)org.springframework.transaction.TransactionSystemException:无法提交JPA事务;嵌套异常为javax.persistence.RollbackException:事务回滚,因为事务设置为仅回滚。
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());
}
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"); 
    }
}