2016-01-10 111 views
0

我找不到什麼是錯在這裏我的代碼是Java錯誤:未報告的異常IOException異常必須被捕獲或者聲明拋出

public class Library{ 

FileReader fr = new FileReader("D:\\Users\\Adi\\Documents\\NetBeansProjects\\Hw 7Jan-13Jan\\Date.txt"); 
BufferedReader br = new BufferedReader(fr); 

public void add(Publication p){ 
    if(counter < publication.length){ 
     publication[counter++]=p;   
    } 
} 

public boolean remove(int id){ 
    Publication p=null; 

    for(int i=0;i<counter;i++) 
     if(publication[i].getId()==id){ 
      p=publication[i]; 

      for(int j=0;j<counter-1;j++) 
       publication[j]=publication[j+1]; 
       publication[counter-1]=null; 
       counter--; 
     return true;   
     } 

      return false;} 

}

我試着用try{}catch{},但後來我其他錯誤:class,interface or enum expected

任何幫助表示讚賞感謝

PS:我是新來的這IOException異常並嘗試{} catch {} :)

+0

看看你正在使用的'FileReader'構造函數 - 它聲明它可以拋出'IOException'。你如何期待這種傳播?您目前對檢查的異常瞭解多少? (不清楚爲什麼你有'fr'和'br'這些字段,因爲你不在別處使用它們,請注意你......) –

+0

你的代碼的某些方法會拋出檢查的異常「IOException」 。這個異常必須通過方法頭中的''拋出IOException''傳遞給調用者,或者被try和catch捕獲。你需要像這樣''try {...} catch(IOException e){...}顯式捕獲一個IOException異常'' –

+0

你是否在一個try-catch塊中包裝了'FileReader'和'BufferedReader'實例 –

回答

0

問題可能在於,您將FileReader fr定義爲類變量。然後你會得到一個錯誤來處理/定義異常。當你爲處理異常定義try-catch時,會出現另一個問題,即「非法啓動類型」。爲此,您需要定義/聲明:

static{ 
    try { 
     FileReader fr = new FileReader("D:\\Users\\Adi\\Documents\\NetBeansProjects\\Hw 7Jan-13Jan\\Date.txt"); 
    } catch (Exception e) { 
    } 
} 

或在構造函數中分配FileReader。

FileReader fr; 

public Library(){ 
    try { 
     fr = new FileReader("D:\\Users\\Adi\\Documents\\NetBeansProjects\\Hw 7Jan-13Jan\\Date.txt"); 
    } catch (Exception e) { 
    } 
    BufferedReader br = new BufferedReader(fr); 
} 
+0

工作!非常感謝你 !! –

相關問題