Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

java. Почему метод, создающий пустой .txt не работает без обработчика исключений?

#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(); } }

Комментариев нет:

Отправить комментарий