2017-04-16 6 views
-3

「をキャッチせずにしてみてください」と私はJavaファイルを書いていますが、私はそれをコンパイルしようとしたとき、私は3つのエラーメッセージの取得維持:Javaは「試しせずにキャッチ」

reader.java:35:エラー:「しようとし' キャッチ(のIOException e)の

reader.java:52を試してみてください 'なし' キャッチ:エラー最後にキャッチ ' ''なし''::エラーまたはリソース宣言

reader.java:48を試してみてください ' :「試しなし」の「キャッチ」 キャッチ(例外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

あなたがtrycatchreader.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を排除することができます。

試し(FileReaderのFR =新規FileReader(filenameIn)){ ... }

関連する問題