2011-04-21 181 views
3

我正在創建一個類 - 只是一個類,沒有main(),而我收到「未報告的異常java.io.FileNotFoundException;必須被捕獲或聲明爲拋出的錯誤」在這一行:未報告的異常java.io.FileNotFoundException;必須被捕獲或聲明爲引發

FileOutputStream outStr = new FileOutputStream(FILE, true); 

我不明白;我放了一個try {} catch {}塊,它仍在報告錯誤。

此外,它還報告「非法啓動的類型」的嘗試和兩條catch line,它也說';'預計兩條漁線。

我正在使用NetBean IDE,FYI。

謝謝你的幫助。

下面是完整的代碼:

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.PrintStream; 
import java.io.FileNotFoundException; 


public class UseLoggingOutputStream 
{ 

    String FILE = "c:\\system.txt"; 

    try 
    { 

     FileOutputStream outStr = new FileOutputStream(FILE, true); 

    } 

    catch(FileNotFoundException fnfe) 
    { 

     System.out.println(fnfe.getMessage()); 

    } 

    catch(IOException ioe) 
    { 

     System.out.println(ioe.getMessage()); 

    } 

} 
+2

這一行是什麼:'Logger.getLogger(「outLog」),Level.ERROR)));'?首先修復它。 – MByD 2011-04-21 19:18:01

+1

你不需要在最明顯的地方在代碼中放置太多'// Begin/End'註釋。他們創造的信息比信息更多。 – kunal 2011-04-21 19:18:06

+0

固定。我原以爲我爲這個問題/答覆帖子的目的刪除了該行,但我表面上錯過了它。我刪除了// Begin和// End註釋。謝謝。 – user717236 2011-04-21 19:31:27

回答

8

你需要把文件處理語句的方法中:

import java.io.FileOutputStream; 
import java.io.FileNotFoundException; 

public class UseLoggingOutputStream { 
    public void myMethod() { 
     String file = "c:\\system.txt"; 
     try { 
      FileOutputStream outStr = new FileOutputStream(file, true); 
     } catch(FileNotFoundException fnfe) { 
      System.out.println(fnfe.getMessage()); 
     } 
    } 
} 
+0

我在主 – Ungeheuer 2017-03-28 02:42:45

+0

@Unngeheuer裏面做同樣的事情時得到了這個東西你仍然需要將FileOutputStream構造包裝在main中的try/catch塊中。或者,您可以聲明一個引發FileNotFoundException的方法。 – climmunk 2017-03-29 02:43:02

+0

我確實在try/catch中有過。無論如何,需要使用stdin,所以只需切換到。 – Ungeheuer 2017-03-29 03:26:06

3

所有功能的代碼需要進入方法 - 我沒有看到一個方法,在你的代碼 - 這類型問題的非法啓動。一旦你掌握了基本知識,其他編譯錯誤就會變得更加清晰。

public class Foo { 

    public void doSomething() { 
    //code here 
    } 

} 
+1

你所有的代碼都在 - > public static void main(String [] args){ – Ishmael 2011-04-21 19:19:33

+0

是的,這解決了問題,我沒有一個方法,我想。就公共靜態void main而言,我試圖創建一個庫類。不是一個庫類不需要一個主要的方法? – user717236 2011-04-21 19:26:06

+2

在Java中,該方法是操作單元。除了類或類級變量中的靜態初始化塊以外,所有代碼都在方法中。如果這是一個Java類將直接啓動的話,那麼您的主要工作是使用簽名的Ishmael provice,即java Foo意味着Foo必須有一個main。帶輔助方法或建模實體的庫類不需要main。 – karakuricoder 2011-04-21 22:47:12

1

將此代碼移至某種方法或至少移至靜態初始化塊。

1
import java.io.*; 
import java.util.*; 

public class SortNames { 

private String[] strings = new String[10]; 

private int counter; 

public SortNames() { 

ArrayList<String> names = new ArrayList<String>(); 
Scanner scan = null; 
File f = null; 

try{ 
f = new File("names.txt"); 
scan = new Scanner(f); 

    while(scan.hasNext()) names.add(scan.next()); 
} 
    finally{scan.close();} 

Collections.sort(names); 

    for(String s:names) System.out.println(s); 

    } 
} 
0

很抱歉,如果這是不是對您有所幫助,但我可以通過增加來解決這個問題,準確「拋出FileNotFoundException異常「我的方法調用包含FileWriter。我知道這可能沒有幫助,因爲你沒有使用方法,但是可能再次,也許是這樣。

相關問題