try-catch-finally
상황에서 메서드 호출과 관련하여 finally
을 처리하는 올바른 방법은 무엇입니까?디자인을 사용하여 'finally'를 사용하여 메서드 호출
내가 묻는 이유는 DB 호출을 만드는 서비스 구현 클래스가 모든 메서드에서 finally
절을 가질 수 있기 때문입니다.
DRY 접근법을 사용하려는 경우 finally
절이 같은 코드를 반복하여 보관하지 않기를 바랍니다. 예
try {
// DB call
} catch (DAOException e) {
// Error messages etc
} finally {
// entityMangerProvider is a field
EntityManager entityManager = entityManagerProvider.get();
EntityTransaction transaction = entityManager.getTransaction();
if (entityManager.isOpen()) {
if (transaction.isActive()) {
transaction.rollback();
}
entityManager.close();
}
}
finally
들어
상기 아웃을 반복 얻는다. 그것은이
private void closeEntityManager() {
EntityManager entityManager = entityManagerProvider.get();
EntityTransaction transaction = entityManager.getTransaction();
if (entityManager.isOpen()) {
if (transaction.isActive()) {
transaction.rollback();
}
entityManager.close();
}
}
그런 짓을하고이 방법의 어떤 단점이 있습니까이
try {
// DB call
} catch (DAOException e) {
// Error messages etc
} finally {
closeEntityManager();
}
을 할 적절한가요? finally 절을 반복해서 반복해서 피하는 더 좋은 방법이 있습니까?
프로젝트가 중요한 경우 Java 7을 사용 중입니다.
방법은 코드 중복을 줄이기위한 것입니다. 이 일을하는 좋은 예처럼 보입니다. –
그런 식으로하는 데에는 단점이 있습니까? 마침내 메서드를 호출하면 해당 메서드가 제대로 실행되지 않을 수 있습니까? – wiredniko
아니요, 여기에 솔루션에 대한 문제는 없습니다. –