|
Оператор throws показывает, что метод может выдавать исключение. Почему не пишут обработчик исключений, когда пишут |
|
Идея такого подхода к обработке ошибок следующая: в данном методе вы обрабатываете только ошибки, которые возникают в процессе его работы. Все остальное должно выбрасываться наверх. Причем вы выбрасываете разные типы ошибок (классы), что позволяет обрабатывать их независимо. Реализацию такого подхода можно увидеть во многих стандартных классах, - особенно в классах для работы с файлами или БД. С другой стороны есть и обратная методика: ваш метод сначала считывает данные из файла, на основе этих данных делает запросы к БД, а потом вызывает генерацию репорта (с последующим сохранением в файл). В таком методе могут возникать разные типы ошибок - при считывании файла, при работе с БД, при записи файлов. Предположим, что этот метод - часть какого-то API. В таком случае есть смысл, наоборот, все типы ошибок обрабатывать внутри метода. А в случае возникновения выбрасывать на верх ошибку типа специально созданного для этого API. Ведь пользователю не всегда важно, в чем там возникла ошибка, его может интересовать просто результат работы метода. Кроме этого механизм выбрасывания ошибок используется еще и как "извращенный" способ обрыва большой вложенности методов или рекурсивных вызовов. Ведь выдав определенный тип ошибки и задав обработку на 5 уровней выше, вы можете вернуться сразу на 5 уровней вверх, что в принципе не позволяет ни один оператор в java. Получается что-то на подобие оператора |
Ну в целом вы все правильно поняли :)