【问题标题】:How to handle exception in javajava中的异常处理方法
【发布时间】:2015-05-21 11:09:39
【问题描述】:

我正在开发 spring mvc 应用程序。我的问题是当我通过控制器类在 dao 中调用 delete 方法时,dao 中没有处理异常。但是如果我在控制器中使用 try catch 来调用方法,它会捕获错误。

控制器类方法:

customerDao.delete(id);

仓库类:

public void delete(long id)
{
try{
em.remove(em.find(id));
}
catch(Exception e)
{
//not come to here
}
}

如果我使用 try catch 来解决“customerDao.delete(id);”句柄错误。 为什么我不能在 dao 类中处理异常。 注意:抛出的异常是发现意外回滚异常的子记录

【问题讨论】:

  • 我们可以看看你的delete()函数吗? Java 中有一种异常 (RuntimeException) 不需要在 try-catch 块内。它会一直抛出到catch。我认为,如果您尝试在 delete 函数中处理异常,它会起作用。
  • 究竟抛出了什么异常?您确定它是从您的 delete()-method 内部抛出的,而不是在提交时抛出的吗?请发布完整的堆栈跟踪,它将回答这些问题。
  • 完整性约束 违反 - 发现意外回滚异常子记录我现在没有确切的代码。这是工作场所发生的问题。
  • 正如我所说的异常是在控制器类中捕获的,但不是在 dao 类中。这是为什么呢?

标签: java spring jpa


【解决方案1】:

EntityManager.remove 不会立即执行任何操作 - 事务提交会强制 JPA 将其语句刷新到数据库中,此时您将获得异常。如果要在 DAO 中处理异常,请添加 em.flush();在 try 块内。这将强制该语句到数据库并立即抛出任何异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 2011-05-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2016-04-03
    相关资源
    最近更新 更多