cytat ze specyfikacji EJB:EJB 3.0 Obsługa wyjątków
Jeśli metoda fasola napotka wyjątek systemu lub błędu, należy prostu propagują błąd z metody fasoli do pojemnika (tj metoda bean nie musi wychwytywać wyjątku).
Ale nie rozumiem tego. Czy to oznacza, że nie powinienem przechwytywać wszystkich typów wyjątków (np. Próbuję złapać klasę Exception
) i ponownie je zgłosić jako wyjątek mojej aplikacji?
Przykładem dla większej jasności:
public void beanMethod throws MyApplicationException {
try {
// do something
} catch (Exception e) {
throw new MyApplicationException(e); // Should I do it like this?
}
}
A może to nie dla programistów EJB, ale tylko dla programistów EJB reference-wdrożeniowych (deweloperzy zbiornika): W tym ostatnim przypadku, w konsekwencji, pojemnik musi nie propaguje wyjątków systemu do mojej metody biznesowej, a mój blok catch(Exception e)
nigdy nie przechwytuje żadnego wyjątku systemowego?
tj. sugerujesz mi, że w metodzie ejb nie masz w ogóle bloku try-catch? – MyTitle
Tak. Jest rzadko potrzebny. –
Może, jeśli chcesz owinąć wyjątek inny niż RuntimeException. Np. SQLException -> MyBusinessException. –