#java #исключения
Почему метод, создающий файл (пустой .txt) не работает без обработчика исключений? package filecreator; import java.io.File; import java.io.IOException; public class FileCreator { public static void main(String[] args) { String fileName = "My File.txt"; String filePath = "/Users/Donrumata/Desktop/"; File myFile = new File(filePath + "/" + fileName); try { myFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } В этом случае компиляция проходит без ошибок (если я не ошибаюсь), но без обработчика - именно в строке с методом, создающим файл, происходит IOExeption. Почему?
Ответы
Ответ 1
Дело в том, что сигнатура метода содержит ключевое слово throws, кое означает, что вызов метода может выкинуть ошибку типа IOException. Методы, так обозначенные не могут быть вызваны вне обработчика исключений (try/catch) или метода, с подобной же сигнатурой.Ответ 2
Потому что метод createNewFile() выглядит вот так: public boolean createNewFile() throws java.io.IOException; throws указывает, что метод может при определенных условия выкинуть IOException, а вызов методов с throws без обертки в try-catch невозможен, оттуда и ошибка. UPD: Невозможен, если метод, вызывающий другой метод, имеющий throws, не содержит throws По твоему примеру: Если приписать твоему методу main ключевое слово throws, то ты можешь забыть про использование try-catch, однако по отношению к main я не стал бы так делать. public static void main(String[] args) throws Exception { String fileName = "My File.txt"; String filePath = "/Users/Donrumata/Desktop/"; File myFile = new File(filePath + "/" + fileName); try { myFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }
Комментариев нет:
Отправить комментарий