В Java вы должны обрабатывать отмеченные исключения, поэтому вы видите ошибки. Это обеспечивается компилятором. То, как вы обрабатываете проверенные исключения, зависит от варианта использования.
Предполагалось, что на уровне языка можно будет восстановить эти исключения. Например, API-интерфейсы ввода-вывода обычно генерируют проверенные исключения.
Если вы хотите, чтобы приложение обработало sh, вам необходимо перехватить и выбросить эти исключения или объявить их с throws
. например,
void doStuff(String name) throws FileNotFoundException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(name));
.... do stuff
}
В качестве альтернативы вы можете перебросить исключение и заключить его в непроверенное исключение:
void doStuff(String name) {
BufferedInputStream bis;
try {
bis = new BufferedInputStream(new FileInputStream(name));
} catch(FileNotFoundException e) {
throw new RuntimeException(e);
}
.... do stuff
}
Однако, как я уже говорил ранее, это обеспечивается компилятором и в результате есть другой способ обойти это.
Lombok имеет аннотацию @SneakyThrows
, которая обходит проверку компилятора.