2017-06-29 40 views
-3

我在这里有一个代码块的问题。我希望能够显示仅包含单词“LANTALK”的文件的输出。但我的看法似乎并不正确。你知道在这种情况下应该抛出哪个例外吗?我会在这种情况下抛出哪个例外?

try 
    { 
    sc = new Scanner(filename); 
     while(sc.hasNext()) 

      { 
      String line=sc.nextLine(); 
      if(line.contains("LANTALK")) 
      System.out.println(line); 
      } 

    } catch (FileNotFoundException e) 
      { 
       System.out.println("The file \""+log+"\" was not found"); 
      } 
+0

你是什么意思“不正确”?仅供参考'IOException'是'FileNotFoundException'的父亲,以防您找到文件以外的其他I/O问题。 – Mena

+0

只是e.printStacktrace() –

+0

意思是它不会编译,对不起。 IOException不会让它编译。 –

回答

0

只需使用e.printStackTrace()

try 
    { 
    sc = new Scanner(filename); 
     while(sc.hasNext()) 

      { 
      String line=sc.nextLine(); 
      if(line.contains("LANTALK")) 
      System.out.println(line); 
      } 

    } catch (FileNotFoundException e) 
      { 
       e.printStackTrace(); 
      } 
0

这一切都取决于这种方法和可能出现的异常将被加工。 也许你不应该抛出异常,而是返回表示文件是否包含该关键字的布尔值。例如:

private boolean isValidFile(final String filename) throws IOException 
{ 
    FileReader fr = new FileReader(filename); 
    BufferedReader br = new BufferedReader(fr); 
    String line; 
    while((line = br.readLine()) != null) 
    { 
     if(line.contains("LANTALK")) 
     { 
      return true; 
     } 
    } 
    return false; 
}