我有一个程序,当用户按下GUI顶部的'x'时,假设使用File IO将信息保存到文件中,但是当我将throws FileNotFoundException
放在main方法中时,它将无法编译而不会出错。
该部分的代码是:
public void windowClosing(WindowEvent e) {
File myFile = new java.io.File("GuidanceAppt.txt");
PrintWriter output = new PrintWriter(myFile);
for (int i=0;i!=1000;i++){
output.println(studentNum[i] + " " + name[i] + " " + time + " " + counselor + " ");
}
}
我可以在顶部添加投掷吗?
public void windowClosing(WindowEvent e)throws FileNotFoundException {
File myFile = new java.io.File("GuidanceAppt.txt");
PrintWriter output = new PrintWriter(myFile);
for (int i=0;i!=1000;i++){
output.println(studentNum[i] + " " + name[i] + " " + time + " " + counselor + " ");
}
}
答案 0 :(得分:1)
你可以这样做但最终你必须处理异常。如果你不这样做,那么当它运行时它可能会不愉快地退出。
一种方法是用try and catch block包围。并告诉用户该文件不存在,或者创建它。
答案 1 :(得分:0)
如果您的班级实施WindowListener
,您将无法在顶部添加throws FileNotFoundException
,因为您的班级不会正确覆盖windowClosing
方法。你需要做的是在可以引发FileNotFoundException
的方法周围使用try-catch块:
try {
File myFile = new java.io.File("GuidanceAppt.txt");
PrintWriter output = new PrintWriter(myFile);
for (int i=0;i!=1000;i++){
output.println(studentNum[i] + " " + name[i] + " " + time + " " + counselor + " ");
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
检查您是否正确覆盖方法的一个好方法是使用@Override
注释,它位于方法之前:
@Override public void windowClosing(WindowEvent ev)
throws FileNotFoundException { // compilation error
@Override public void windowClosing(WindowEvent ev) {
答案 2 :(得分:0)
如果要覆盖超类中的方法(如WindowAdapter
)或在接口中实现方法(如WindowListener
),则覆盖只能声明抛出异常,超类/接口方法也是如此声明。
由于windowClosing
中的WindowListener
声明没有例外,您的覆盖也不允许声明任何例外。
不覆盖或接口实现的方法可以抛出您想要的任何异常。