2014-10-10 204 views
0

我有這樣的代碼,但有一個錯誤此, 我不擅長用java,所以我貼我的問題在這裏...這是我的代碼調用函數:未報告IOException異常必須聲明拋出

public static void SaveFile() throws IOException{ 
     System.out.println("Saving File!"); 
     FileWriter toTextFile = new FileWriter("output.txt"); 
     for(x=0;x<new_num_book;x++){ 
       toTextFile.write(name[x]); 
      } 
     toTextFile.close(); 

    } 

blah blah 
else if(option == 5){ 
      SaveFile(); 
     } 

問題是netbeans聲明訪問SaveFile函數時出錯。請幫忙!謝謝

+0

看起來你沒有捕捉到'SaveFile'方法聲明的IOException。但是我們需要檢查更多的代碼以確保這一點。 – 2014-10-10 02:42:35

回答

2

saveFile拋出一個IOException,你需要處理它或將它傳遞給調用者。

看看The try Block更多細節

如果沒有更多的背景下,很難說你應該做的。你可以處理異常的當前方法中...

else if(option == 5){ 
    try { 
     SaveFile(); 
    } catch (IOException exp) { 
     // Handle the exception, tell the user, roll back, what ever 
     // At the very least use exp.printStackTrace() 
    } 
} 

或聲明當前方法拋出IOExceptionSaveFile方法確實

SaveFile方法也是潛在的,留下的文件打開。 ..

如果文件寫作過程中由於某種原因失敗,toTextFile.close可能永遠不會被調用,相反,你應該利用try-finally塊,例如

public static void SaveFile() throws IOException{ 
    System.out.println("Saving File!"); 
    FileWriter toTextFile = null; 
    try { 
     toTextFile = new FileWriter("output.txt"); 
     for(x=0;x<new_num_book;x++){ 
      toTextFile.write(name[x]); 
     } 
    } finally { 
     try { 
      toTextFile.close(); 
     } catch (Exception exp) { 
     } 
    } 
} 

,或者如果您使用的是Java 7+,您可以利用的try-with-resources功能,例如...

public static void SaveFile() throws IOException{ 
    System.out.println("Saving File!"); 
    try (FileWriter toTextFile = new FileWriter("output.txt")) { 
     for(x=0;x<new_num_book;x++){ 
      toTextFile.write(name[x]); 
     } 
    } 
} 

您可能還需要有Lesson: ExceptionsCode Conventions for the Java TM Programming Language,讀這將使人們更容易閱讀你的代碼並讓你閱讀其他人

+0

我不明白它...... – chano 2014-10-10 02:47:04

+0

@chano你需要閱讀鏈接教程 – MadProgrammer 2014-10-10 02:48:06

+0

@chano基本上,'SaveFile'方法曾經說過它可以拋出一個'IOException',它的沖洗手掌負責,現在處理異常的責任屬於調用者,它要麼需要處理異常,要麼將其重新拋給它的調用者... – MadProgrammer 2014-10-10 02:49:30

相關問題