如何区分导致异常的错误?我想根据我收到的错误类型做出不同的事情。像这样的事情:
try {
entityManager.getTransaction().begin();
entityManager.persist(entity);
entityManager.getTransaction().commit();
} catch (PersistenceException exception) {
if(DUPLICATE_RECORD)
//do something about it
else if(SOME_VALUE_IS_NULL)
//do something about it
else if(SOME_VALUE_IS_OUT_OF_RANGE)
//do something about it
...
}
最佳答案
PersistenceException
有可以单独捕获的子类,例如:
- EntityExistsException
- EntityNotFoundException
- NonUniqueResultException
- 没有结果异常
- OptimisticLockException
- 回滚异常
- TransactionRequiredException
在捕获PersistenceException
之前,分别捕获您关心的其中一个。
例如:
try {
....
}
catch (EntityExistsException exception) {
....
}
catch (PersistenceException exception) {
....
}
EntityExistsException
可能是您想要捕获的异常,以查明您尝试保留的对象何时已存在:
Thrown by the persistence provider when EntityManager.persist(Object) is called and the entity already exists.
关于java - 如何从 JPA 中的持久性异常中获取不同类型的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25119957/