Duvida sobre tratamento Exceptions JPA

Olá tenho uma aplicação que usa na camada de Persistencia JPA tenha a interface Dao que e implementado pela classe concreta

GenericaJPADao desta forma:

public class GenericJPADao<T> implements Dao<T>{
	private EntityManager entityManager; //Injetado por IoC
	private Class persistenceClass;

	public GenericJPADao(Class persistenceClass){
		this.persistenceClass=persistenceClass;
	}

	public void delete(T entity) throws DaoException {
		try {
			entityManager.remove(entity);
		} catch (IllegalStateException e) {
			throw new DaoException(e);
		}catch (IllegalArgumentException e) {
			throw new DaoException(e);
		}catch (TransactionRequiredException e) {
			throw new DaoException(e);
		}catch (Exception e) {
			throw new DaoException(e);
		}

	}

Minha duvida e a seguinte olhando a API do JPA, este metodo delete pode lançar estas tres exception, mas eu nao quero que minha camada de Negocios conheça estas exception, entao criei DaoException, agora neste caso faz diferença fazer isto:

try {
  entityManager.remove(entity);
	}catch (Exception e) {
		throw new DaoException(e);
	}
}

Sei que isto eh ruim(coisa de preguiçoso), mas no caso acima nao vejo ganho nenhum a este. Logico que em outros locais quando quero alguma excessao em particular faço isso:

public void save(T entity) throws ConstraintViolationDaoException, DaoException {
		try {
			entityManager.persist(entity);
		} catch (EntityExistsException e) {
			throw new ConstraintViolationDaoException(e);
		}catch (Exception e) {
			throw new DaoException(e);
		}
	}

Mas no caso acima, achei igual fazer catch-exception para tudo.

O que acham desta abordagem?

Na minha opnião, exceções desse tipo não devem ser captiradas pela aplicação, deixe que o container faça o tratamento delas, redirecionando para uma pagina de erro amigável.

Encapsular exceções dessa forma só vai encher o código de try-catchs que não agregam nada para a aplicação.

Nao tinha pensado nisso, mas desta forma que voce falou eu configuro onde no web.xml? com ?

Uma outra forma de lidar com exceções “genéricas” do JPA é um try-catch de PersistenceException, de onde todas as exceções de JPA são herdadas.

Abaxio uma breve descrição sobre a aplicação (retirado do Javadoc do Java EE 5):

Espero ter ajudado.

Abs.

[quote=Rubem Azenha]Na minha opnião, exceções desse tipo não devem ser captiradas pela aplicação, deixe que o container faça o tratamento delas, redirecionando para uma pagina de erro amigável.

Encapsular exceções dessa forma só vai encher o código de try-catchs que não agregam nada para a aplicação.[/quote]

Rubem como eu poderia fazer esse tratamento no container, quando estou usando um framework, que encapsula estas exceções
em exceções mais genéricas?

Uma opção é simplesmente deixar as exceções “estourarem” no seu container e configurar o seu web.xml assim:

	&lt;error-page&gt;
		&lt;exception-type&gt;java.lang.Throwable&lt;/exception-type&gt;
		&lt;location&gt;/paginaErro.jsp&lt;/location&gt;
	&lt;/error-page&gt;

Pra grande maioria dos casos, isso é suficiente.
Apenas configure corretamente o sistema de logging do seu container para escrever as stacktraces em um arquivo de log.