2015-03-18 4 views
-2

Im работает над весной mvc приложения. Моя проблема заключается в том, что я вызываю метод delete в dao по классу контроллера, исключение не обрабатывается в dao. но если я использую try catch для вызова метода в контроллере, он поймает ошибку.Как обрабатывать исключение в java

контроллер метод класса:

customerDao.delete(id); 

Rapository класс:

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

Если я использую попробовать поймать вокруг "customerDao.delete(id);" обрабатывать ошибку. Почему я не могу обработать исключение в классе dao. Примечание: Исключение брошено - это детская запись найденная неожиданная обратная связь

+0

Можем ли мы увидеть вашу функцию 'delete()'? В Java существует исключение ('RuntimeException'), которое не должно находиться внутри блока try-catch. Он будет кидать, пока «поймать». Я думаю, если вы попытаетесь обработать исключение в функции 'delete', это сработает. –

+3

Какое точное исключение бросается? Вы уверены, что он выкинут из вашего метода 'delete()', а не когда совершает? Пожалуйста, опубликуйте полный стек, он ответит на эти вопросы. –

+0

нарушение целостности <имя ограничения> нарушено - детская запись найденная неожиданная обратная связь У меня сейчас нет точного кода. это проблема на рабочем месте. – Dilis

ответ

0

EntityManager.remove ничего не делает - транзакционная транзакция заставляет JPA сбрасывать свои операторы в базу данных, то есть когда вы получите исключения. Если вы хотите обработать исключение в своем DAO, добавьте em.flush(); в блоке try. Это заставит заявление в базу данных немедленно выбросить все исключения.

Смежные вопросы