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