Он не перехватывается вторым предложением catch, №
Каждое предложение catch в списке пробуется, чтобы проверить, соответствует ли оно.Первый, который соответствует, - единственный, который выполняется, затем код переходит к предложению finally
.
Другой результат этого заключается в том, что если у вас есть:
try {
throw SubTypeOfException(...);
} catch(Exception e) {
... block 1 ...
} catch(SubTypeOfException e) {
... block 2 ...
}
Блок 1 будет единственным, который будет работать, даже если блок 2 будет соответствовать.Только первое соответствующее предложение catch оценивается.