Когда метод может выбросить IOException и FileNotFoundException, настоятельно рекомендуется обработать каждое исключение в отдельном блоке catch. Если мы решим поместить оба исключения в один блок catch, то нам придется добавить дополнительный код для определения, какое исключение было выброшено. Проще всего разместить два блока catch, которые следуют друг за другом:
try {
// Код, который может выбросить IOException
} catch (IOException e) {
// Обработка IOException }
try {
// Код, который может выбросить FileNotFoundException
} catch (FileNotFoundException e) {
// Обработка FileNotFoundException }
В этом случае каждое исключение будет обработано отдельно, и такой подход упрощает код обработки исключений и делает его более понятным. Если оба блока catch были задействованы, то оба будут выполнены.
Пример кода для обработки этих исключений:
try {
// some code that may throw IOException or FileNotFoundException
} catch (IOException e) {
// handle IOException
} catch (FileNotFoundException e) {
// handle FileNotFoundException }