Почему разные исключения для FileWriter и FileOutputStream? - PullRequest
4 голосов
/ 24 января 2012

Документы Java 7 для FileWriter и FileOutputStream показывают, что конструктор FileWriter выдает IOException, а конструктор FileOutputStream выдает FileNotFoundException.

Причина обоих исключений одна и та же. В нем говорится: «если файл существует, но является каталогом, а не обычным файлом, не существует, но не может быть создан или не может быть открыт по любой другой причине»

Если это так, то почему создатели Java выбирают специализированное исключение для FileOutputStream и общее исключение для FileWriter ??

1 Ответ

4 голосов
/ 24 января 2012
  1. FileWriter extends OutputStreamWriter, чей конструктор выдает UnsupportedEncodingException.
  2. Если вы посмотрите на реализацию FileWriter, она использует FileOutputStream, которая выдает FileNotFoundException.

Поскольку конструктор FileWriter теперь может генерировать любое из этих исключений, объявлено, что он выбрасывает IOException, который является общим суперклассом для обоих исключений.(В качестве альтернативы можно было бы объявить, что он выбрасывает два отдельных исключения.)

...