В некоторых случпаях один фрагмент кода может инициализировать более одного исключения. Чтобы спраиться с такой ситуацией, вы можете задать два или более операторов catch, каждый для перехвата своего типа исключений. Когда передается исключение, каждый оператор catch проверяется по порядку, и первый из них, тип которого соответсвует исключению, выполняется. После того как выполнится один из опреаторов catch, все остальные пропускаются и выполнение программы продолается с места, следующего за блоком try/catch. В следующем примере кода перехватываются два разных типа исключений (Начиная с Java 7 можно перехватывать разные исключения одной строкой):
try {
...
} catch (IOException|SQLException ex) {
logger.log(ex);
throw ex;
}
Однако если каждое исключение подразумевает индивидуальные действия, придется создавать несколько блоков catch:
try {
...
} catch (IOException ex) {
//action 1
} catch (SQLException ex) {
//action 2
}