Поймать исключение для файла notfound - PullRequest
3 голосов
/ 07 июня 2011

Таким образом, говорят, что вылавливаются только исключения, которые вы не можете предсказать или которые являются исключительными.

Так, например, IOExceptions вместо FileNotFoundException (так как этот единственный случай может быть обработан с помощью простой проверки файла, избегайте использования исключенийкак управление потоком).

Это мое понимание темы, поправьте меня, если я ошибаюсь.

Однако возникает вопрос .... почему доступны исключения, такие как FileNotFoundException?

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 июня 2011

Вы должны ловить исключения, которые вы можете обработать.Ваше первое предложение немного неправильное и может быть причиной того, что вы путаетесь.

"Так, как говорят, выявляются только исключения, которые вы не можете предсказать или которые являются исключительными."

Это должно читаться как

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

Таким образом, если вы можете обработать FileNotFoundException, то вы должны поймать его.Существует множество исключений, которые расширяют IOException, и, конечно, вы не можете (не хотите?) Обрабатывать их все.

2 голосов
/ 07 июня 2011

Рассмотрим случай, когда файл удаляется в файловой системе в промежутке между проверкой и выполнением операции, которая может вызвать исключение. Это может показаться маловероятным, но такого рода вещи случаются.

0 голосов
/ 07 июня 2011

Вы должны различать лучшие практики и абсолютные требования. Рекомендуется сначала проверить файл, прежде чем пытаться получить к нему доступ. Тем не менее, это не может быть принудительно исполнено. Поскольку существует абсолютное требование, чтобы файл существовал до того, как к нему будет осуществлен доступ, среда будет выдавать исключение для принудительного выполнения этого условия.

В идеальном мире не было бы никаких исключений, потому что не было бы ошибок, и все программы и сети (и пользователи!) Были бы абсолютно идеальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...