Как мне обработать IOException
, когда переменная определена глобально?
Я получаю ошибку Error:(8, 43) java: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
Это мой код:
import java.io.*;
public class generator {
private static char[] alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
private static StringBuilder partialSolution = new StringBuilder();
private static File fout = new File("out.txt");
private static FileOutputStream fos = new FileOutputStream(fout); //the syntax error is here
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
private static void bt(int maxIndex, int index) throws IOException {
if (index == maxIndex) {
String solution = partialSolution.toString();
System.out.println(solution);
bw.write(solution);
bw.newLine();
} else {
for (char c : alphabet) {
partialSolution.append(c);
bt(maxIndex, index + 1);
final int lastCharIndex = partialSolution.length() - 1;
partialSolution.deleteCharAt(lastCharIndex);
}
}
}
private static void btCaller(int maxIndex) throws IOException {
bt(maxIndex, 0);
bw.close();
}
public static void main(String[] args) throws IOException {
btCaller(3);
}
}
Я знаю, что могу сделать throws IOException
и попробовать / поймать , как в этом вопросе :
try {
private static FileOutputStream fos = new FileOutputStream(fout);
} catch (IOException e) {
e.printStackTrace();
}
но, когда я делаю эти методы, я получаю синтаксическую ошибку (Error:(8, 5) java: illegal start of type
). Я помещаю код в неправильное место?
Как мне решить эту ошибку?