Tratamento exceçoes ejb bmt

Pessoal tenho um ejb que deve ser BMT, entao eu mesmo tenho que fazer o controle de transacao.

o codigo abaixo ilustra como faço para gravar um obj qualquer:

try {
 this.transaction.begin();
 this.em.persist(importacao);
 this.transaction.commit();
 } catch (RollbackException e) {
  throw new EJBException("Erro ao gravar importação", e);
 } catch (Exception e) {
  try {
   this.transaction.rollback();
  } catch (SystemException se) {
   throw new EJBException("Erro ao efetuar rollBack na atualizacao de importação", se);
  }
  throw new EJBException("Erro ao atualizar importação", e);
}

tendo em vista que qualquer erro deve efetuar um rollback:
vejo se aconteceu uma RollbackException, pois se ocorrer nao preciso fazer rollback pois ja foi feito sozinho, e depois caso aconteça qualquer outra exceçao eu efetuo rollback.

porem achei que ficou feio o codigo, tambem vejo que nao preciso enviar uma msg para cada um dos casos: erro ao gravar ou erro ao efetuar rollback. Fiz isso apenas para identificar melhor o erro, pois creio que deixar o bloco catch vazio ia ser pior ainda.

ja que qualquer erro deve retornar uma exceçao avisando que nao pode gravar o obj pensei assim tb:

try {
			this.transaction.begin();
			this.em.persist(importacao);
			this.transaction.commit();
		} catch (Exception e) {
			try {
				this.transaction.rollback();
			} catch (SystemException se) {
							throw new EJBException("Erro ao atualizar importação", se);
			}

			throw new EJBException("Erro ao atualizar importação", e);
		}

alguem poderia me auxiliar numa melhor abordagem ?