Java статическая ошибка printstream

Неотмеченное исключение java.io.FileNotFoundException; должен быть пойман или объявлен брошенным

Я пишу основную программу для создания сценария. Я использую два метода для записи в файл, поэтому я решил использовать файл статического уровня и printstream.

static String fileName = "R1";
static File inputFile = new File(fileName+".txt");
static PrintStream write = new PrintStream(fileName+"_script.txt");

`Он не побежит, он просит меня поймать или бросить. Нужно ли добавлять предложение try-catch на уровне класса, и возможно ли это?

2 ответа

PrintStream конструктор выдает исключение, которое вам нужно перехватить, но вы не сможете его обработать, если просто сделаете это;

static PrintStream write = new PrintStream(fileName + "_script.txt");

так что ваши варианты:

попробуйте определить статический блок

static String fileName = "R1";
static File inputFile = new File(fileName + ".txt");
static {
    try {
        PrintStream write = new PrintStream(fileName + "_script.txt");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

или даже лучше определить статический метод для инициализации этих объектов:

static String fileName;
static File inputFile;
static PrintStream write;

public static void init() throws FileNotFoundException {
    fileName = "R1";
    inputFile = new File(fileName + ".txt");
    write = new PrintStream(fileName + "_script.txt");
}

Вы не можете инициализировать PrintStream как это, потому что он должен генерировать исключение, поэтому вы должны поймать это исключение, как? Вы можете создать метод, который может вызвать это исключение, например:

static String fileName;
static File inputFile;
static PrintStream write;

public static void init() throws FileNotFoundException {
//------------------^^-------^^
    fileName = "R1";
    inputFile = new File(fileName + ".txt");
    write = new PrintStream(fileName + "_script.txt");
}

Или даже вы можете поймать свое исключение с помощью:

public static void init() {
    fileName = "R1";
    inputFile = new File(fileName + ".txt");
    try {
        write = new PrintStream(fileName + "_script.txt");
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    }
}
Другие вопросы по тегам