import java.io.*;public class InputFile {
private BufferedReader in;
public InputFile(String fname) throws Exception {
try {
in = new BufferedReader(new FileReader(fname));
} catch(FileNotFoundException e) {
System.out.println("Could not open " + fname);
throw e; //这里为什么要重新把 FileNotFoundException 这个异常给抛出去?既然已经捕获了这个
//异常,何必再把它抛向上一层呢?
} catch(Exception e) {
try {
in.close();
} catch(IOException e2) {
System.out.println("in.close() unsuccessful");
}
throw e;
} finally {
}
}
public String getLine() {
String s;
try {
s = in.readLine();
} catch(IOException e) {
throw new RuntimeException("readLine() failed");
}
return s;
}
public void dispose() {
try {
in.close();
System.out.println("dispose() successful");
} catch(IOException e2) {
throw new RuntimeException("in.close() failed");
}
}
}
private BufferedReader in;
public InputFile(String fname) throws Exception {
try {
in = new BufferedReader(new FileReader(fname));
} catch(FileNotFoundException e) {
System.out.println("Could not open " + fname);
throw e; //这里为什么要重新把 FileNotFoundException 这个异常给抛出去?既然已经捕获了这个
//异常,何必再把它抛向上一层呢?
} catch(Exception e) {
try {
in.close();
} catch(IOException e2) {
System.out.println("in.close() unsuccessful");
}
throw e;
} finally {
}
}
public String getLine() {
String s;
try {
s = in.readLine();
} catch(IOException e) {
throw new RuntimeException("readLine() failed");
}
return s;
}
public void dispose() {
try {
in.close();
System.out.println("dispose() successful");
} catch(IOException e2) {
throw new RuntimeException("in.close() failed");
}
}
}
再往上抛Exception, 是为了不让后面的程序继续执行
抛出去后外面的程序就可以catch到,这样就能知道问题的详细信息,以做出相应的动作