1

このコードを何度かチェックしましたが、catch ステートメントに関してエラーが発生する理由がわかりません。Java 7 では、1 つの catch 句で複数の例外を処理できることを認識しています。

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

public class MultiCatch
{
    public static void main(String[] args)
    {
        int number;

        try
        {
            File file = new File("Numbers.txt");
            Scanner inputFile = new Scanner(file);

            while (inputFile.hasNext())
            {
                number = inputFile.nextInt();

                System.out.println(number);
            }

            inputFile.close();
        }

        catch(FileNotFoundException | InputMismatchException ex)
        {
            System.out.println("Error processing the file.");
            //System.out.println("Error processing the file." + ex.getMessage());
        }
    }
}

エラー:

$ javac MultiCatch.java
MultiCatch.java:25: <identifier> expected
        catch(FileNotFoundException | InputMismatchException ex)
                                   ^
MultiCatch.java:25: '{' expected
        catch(FileNotFoundException | InputMismatchException ex)
                                     ^
MultiCatch.java:25: not a statement
        catch(FileNotFoundException | InputMismatchException ex)
                                                             ^
MultiCatch.java:25: ';' expected
        catch(FileNotFoundException | InputMismatchException ex)
                                                              ^
MultiCatch.java:31: reached end of file while parsing
}
 ^
5 errors

それが違いを生む場合、私はJava 7を実行しているOSX 10.8を使用しています。

4

3 に答える 3

1

このコードにはエラーがなく、Java 7 に準拠しています。コンパイラの設定を確認してください。コードを Java 6 としてコンパイルしています。

于 2013-05-08T07:23:40.050 に答える
0

IDE に応じて、Java 互換性レベルを 1.6 または 1.5 から 7 に設定します。

  1. Eclipse の場合、これは OSX にも適用されます: link。私は Eclipse を使用しています。プログラムを実行する JVM/JRE/JDK を指定することは 1 つのことですが、異なる Java バージョンでプログラムを実行することもできます。
  2. NetBeans の場合は、これらを参照してください: linklink、プロジェクト レベルの設定も必要になる場合があります。
  3. IntelliJ: プロジェクト レベルを 7: linkに設定します。
于 2013-05-07T23:06:17.147 に答える