Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JPA NoResultException


Автор: mecid 10.3.2010, 02:02
Вот такой вопрос с точки зрения правильности писания кода. 
Как лучше писать 
Код

Query q = em.createQuery("...");
//....
try{
Entity e = q.getSingleResult();
}catch(NoResultException e){
//тут код,если не найдено
}
//если найдено

или
Код

Query q = em.createQuery("...");
//....

try{
Entity e = q.getSingleResult();
}catch(NoResultException e){}
if(e != null){
//если найдено
}else{
//если не найдено
}

Автор: intr 10.3.2010, 02:49
Мне первый вариант больше нравится smile Ибо не хорошо обрабатывать исключение пустым блоком. А второй вариант близок по семантике к "C" стилю, когда исключений нет. Хотя все зависит от контекста  smile

Автор: mecid 10.3.2010, 08:23
но заключать логику в обработчик исключения тоже както не так?
есть еще такой вариант как всегда тащить getResultList() и потом проверять его на isEmpty();
чтобы без исключений

Автор: mecid 10.3.2010, 18:05
так думаю лучше?

Автор: Andrey1 12.3.2010, 13:03
1) У меня такое впечатление, что второй код не скомпилиться.
2) Зачем нужен второй вариант и чем он может быть лучше на вкидку не понятно.

Автор: mecid 12.3.2010, 14:35
чтобы не заключать логику в обработке исключений

Автор: intr 12.3.2010, 17:27
Цитата(mecid @ 12.3.2010,  19:35)
чтобы не заключать логику в обработке исключений

Я не вижу в этом ничего плохого. В крайнем случае надо выделит этот код  в отдельный метод smile

Автор: 5ad1sT 12.3.2010, 18:47
А склоняюсь к использованию списка и isEmpty(). smile а там уже кому как smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)