У меня есть следующая транзакция SQL в java
public List<MyObj> find() {
Session session = sessionFactory.openSession();
Transaction tx = null;
List<MyObj> obj = null;
try {
tx = session.beginTransaction();
String sql = " some sql query";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(MyObj.class);
objs = query.list();
tx.commit();
}
catch(Exception e) {
if (tx != null) tx.rollback();
}
finally {
session.close();
}
return objs;
}
Должен ли я ловить SQLException вместо Exception? Когда я меняю класс на SQL Exception, я получаю сообщение об ошибке, что я должен добавить предложение throws, а затем удалить предложение catch.
Могу ли я добавить объявление throws и по-прежнему перехватывать и обрабатывать SQLException? в этом случае откат?
catch(Exception ...)
является антипаттерном, как иthrows Exception
. Всегда имейте дело с более конкретными исключениями. - person Lew Bloch   schedule 27.03.2017