throws
объявляет, что метод может выдать исключение , поэтому к нему должен быть подготовлен код, вызывающий этот метод.
Подготовка к исключению означает, что код может перехватить исключение или повторно его выбросить.
Рассмотрим конструктор new FileInputStream(File pFile)
, который создаст FileInputStream
из File
объекта. Поскольку файл может не существовать или быть недоступным для чтения, конструктор выдаст исключение FileNotFoundException (как объявлено).
Так что любой код, который вызывает этот конструктор, будет либо перехватывать, либо перебрасывать его.
Поймав это, код сам позаботится об этом исключении, а перебросив его, код позволит вызывающему позаботиться об этом.
Рассмотрим следующие два кода:
Код 1: Улов -> Позаботься об этом
public String readTextFile(File pFile) {
try {
FileInputStream FIO = new FileInputStream(pFile);
... // Do the reading and return
} catch (FileNotFoundException E) {
System.err.println("The file is not found");
}
}
Код 2: Бросок -> Пусть вызывающий позаботится о
public String readTextFile(File pFile) throws FileNotFoundException {
FileInputStream FIO = new FileInputStream(pFile);
... // Do the reading and return
}
Так что вызывающий readTextFile
должен будет также поймать или отбросить его.
Этот механизм гарантирует, что кто-то должен каким-то образом позаботиться об исключении.
Надеюсь, я помогу.