2017-04-16 61 views
-3

我写一个Java文件,但是当我尝试编译它,我一直得到3错误信息:Java“的尝试没有抓”和“抓而不尝试”

reader.java:35:错误:“尝试“没有 '抓', '最后' 或资源声明 尝试

reader.java:48:错误: '抓' 没有 '尝试' 赶上(IOException异常E)

reader.java:52:错误:'catch'without'try' catch(Exception e)

3错误

为什么?我错过了什么?这里是我的代码:

public static void processRecords(String filenameIn, Person[] personArray) 
{ 
    try 
    { 
     FileReader fr = new FileReader(filenameIn); 
     BufferedReader reader = new BufferedReader(fr); 
     reader.readLine(); 

     for (int i = 0; i <personArray.length; i++) 
     { 
      String[] data = reader.readLine().split("/t"); 
      personArray[i] = new Person(Integer.parseInt(data[0]), data[1], data[2], Integer.parseInt(data[3])); 
     } 
    } 
     reader.close(); 
    catch(IOException e) 
    { 
     System.out.println("ERROR: WRONG FILE " + e.toString()); 
    } 
    catch(Exception e) 
    { 
     System.out.println("ERROR" + e.toString()); 
    } 
} 
+0

你'reader.close()'调用是在错误的地方! – Li357

+0

欲了解更多信息:http://stackoverflow.com/questions/35321312/java-try-catch-block –

+0

try块必须跟在catch块之后;之间没有任何东西所以将reader.close()移入try块。 – GhostCat

回答

2

你不能把trycatch之间reader.close()。要么将其放入finally block,要么使用try-with-resources。像,

try (BufferedReader reader = new BufferedReader(new FileReader(filenameIn))) { 
    reader.readLine(); 
    for (int i = 0; i < personArray.length; i++) { 
     String[] data = reader.readLine().split("/t"); // <-- should be \\t for tab. 
     personArray[i] = new Person(Integer.parseInt(data[0]), data[1], 
       data[2], Integer.parseInt(data[3])); 
    } 
} catch (IOException e) { 
    System.out.println("ERROR: WRONG FILE " + e.toString()); 
} catch (Exception e) { 
    System.out.println("ERROR" + e.toString()); 
} 

或与finally块,

BufferedReader reader = null; 
try { 
    reader = new BufferedReader(new FileReader(filenameIn)); 
    reader.readLine(); 
    for (int i = 0; i < personArray.length; i++) { 
     String[] data = reader.readLine().split("\\t"); // <-- to split on tab. 
     personArray[i] = new Person(Integer.parseInt(data[0]), 
       data[1], data[2], Integer.parseInt(data[3])); 
    } 
} catch (IOException e) { 
    System.out.println("ERROR: WRONG FILE " + e.toString()); 
} catch (Exception e) { 
    System.out.println("ERROR" + e.toString()); 
} finally { 
    if (reader != null) { 
     reader.close(); 
    } 
} 
0

您也可以消除reader.close()通过使用try-与资源干脆打电话。

尝试(FR的FileReader =新的FileReader(filenameIn)){ ... }