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
いいえ、私はここであなたのソリューションに何か問題はありません。 –