public class s1 {
void m1(){
m2();
}
String m2() throws IOException{
BufferedReader inputFile = new BufferedReader(new FileReader("a.txt"));
String line = inputFile.readLine();
inputFile.close();
return line;
}
}
public class Main {
public static void main(String[] args) {
s1 obj1 = new s1();
try {
obj1.m1();
}
catch (Exception e){
System.out.println("I got it!");
}
}
}
當我運行這段代碼,我從main方法的檢查異常
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type IOException
我感到困惑的是消息,因爲我認爲我處理這個檢查IOException異常的主要方法處理。然而,編譯器希望我也將throws
添加到void m1()
。這樣做的主要原因是什麼?
每一個方法調用平方米必須確定它是如何HANDELS是例外。那確實包括m1。 –
'm1'調用'm2','m2'拋出'IOException'。但'm1'不處理異常,因此您必須選擇:make'm1'引發異常,或爲'm2'調用添加'try/catch'塊 –
與'm2'完全相同捕獲或聲明拋出可能在其調用的方法中發生的'IOException'(例如'readLine()'),'m1'也必須執行相同的操作,因爲它會調用一個方法('m2()') IOException'。 – Berger