2011-04-21 93 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。我知道这可能没有帮助,因为你没有使用方法,但是可能再次,也许是这样。

相关问题