У меня есть метод, который выбрасывает MalformedURLException
.Я ловлю исключение с try-catch
.
, но вместо перехвата MalformedURLException
оно переходит на EJBException
.
try {
myMethod(); // throws an exception
} catch (WebApplicationException ex) {
ex.printStackTrace();
} catch (MalformedURLException ex) {
ex.printStackTrace(); // I expected the debugger to jump to that line
} catch (EJBException ex) {
ex.printStackTrace(); // debugger jumps to this line
} catch (Exception ex) {
ex.printStackTrace();
}
StackTrace:
WARNING: A system exception occurred during an invocation on EJB MyClass, method: public com.name.AnotherClass com.name.MyClass.myMethod(java.lang.String,java.lang.String) throws java.net.MalformedURLException
WARNING: javax.ejb.EJBException
[...] // much more text...
Caused by: javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
[...] // much more text...
FATAL: javax.ejb.EJBException
[...] // much more text...
Caused by: javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
[...] // much more text...
As указано здесь :
Если первый улов соответствует исключению, он выполняет, если нет, следующий пробуется и включается и включается, пока один не будет найден или отсутствуетare.
В моем примере MalformedURLException
срабатывает первым, как вы можете видеть в 1-й строке:
throws java.net.MalformedURLException
Только во 2-й строке написано:
javax.ejb.EJBException
Итак, почему он сразу переходит на EJBException
, если MalformedURLException
срабатывает первым?