Есть еще один вариант, если обработка исключений не обязательно должна происходить в методе getContents - добавить к методу предложение throws, чтобы метод генерировал исключение:
public static String getContents (File file)
throws IOException, FileNotFoundException {
Таким образом, код, вызывающий метод, будет обрабатывать Exceptions, а не сам метод. В этом методе не будет необходимости в блоках _5 _ / _ 6_, если Exception будут переданы методам, которые его вызвали.
Это может быть или не быть желаемым способом справиться с ситуацией, в зависимости от ожидаемого поведения метода.
Изменить
Если подумать, то хорошей идеей может быть создание исключения из метода. Я думаю, что комментарий Д. Шоули, на мой взгляд, хорошо подытоживает: «обработка исключений должна означать обработку исключения только там, где это имеет смысл».
В этом случае кажется, что метод getContents получает содержимое указанного File и возвращает String вызывающей стороне.
Если обработка исключений должна была выполняться в методе getConents, единственный способ сообщить, что произошла ошибка, - это вернуть какое-то заранее определенное значение, например null, вызывающему, чтобы сообщить, что произошла ошибка.
Однако, если сам метод возвращает исключение вызывающей стороне, вызывающая сторона может выбрать соответствующую реакцию:
try {
String contents = getContents(new File("input.file"));
} catch (IOException ioe) {
// Perform exception handling for IOException.
} catch (FileNotFoundException fnfe) {
// Inform user that file was not found.
// Perhaps prompt the user for an alternate file name and try again?
}
Вместо того, чтобы метод setContents предлагал свой собственный протокол для уведомления о возникновении ошибки, вероятно, было бы лучше передать IOException и FileNotFoundException обратно вызывающей стороне метода, чтобы обработка исключений могла выполняться в месте, где соответствующий альтернативный действия могут иметь место.
Обработка исключений должна выполняться только в том случае, если может иметь место значимая обработка.
person
coobird
schedule
15.06.2009