Java多捕获异常错误

时间:2013-05-07 20:01:04

标签: java exception

我已经多次检查过这段代码了,我无法弄清楚为什么它会在catch语句中吐出错误。我知道使用Java 7可以使用一个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。

3 个答案:

答案 0 :(得分:3)

在Java 6下,我的代码出现了这个编译错误:

C:\dev\src\misc\MultiCatch.java:25: <identifier> expected
        catch(FileNotFoundException | InputMismatchException ex)
                                   ^
C:\dev\src\misc\MultiCatch.java:25: '{' expected
        catch(FileNotFoundException | InputMismatchException ex)
                                     ^
C:\dev\src\misc\MultiCatch.java:25: not a statement
        catch(FileNotFoundException | InputMismatchException ex)
                                                             ^
C:\dev\src\misc\MultiCatch.java:25: ';' expected
        catch(FileNotFoundException | InputMismatchException ex)
                                                               ^
C:\dev\src\misc\MultiCatch.java:31: reached end of file while parsing
}

但是,在Java 7下,您的代码编译成功。

您必须使用Java 6或更低版本才能获得这些错误。

问题是每个例外必须有一个名称。在Java 7下,

catch(FileNotFoundException | InputMismatchException ex)

是正确的语法。

答案 1 :(得分:1)

此代码没有错误,并且符合Java 7。检查编译器的设置,您要将代码编译为Java 6。

答案 2 :(得分:0)

根据您的IDE,将Java兼容级别设置为1.6或1.5到7。

  1. 对于Eclipse,这也适用于OSX:link。我正在使用Eclipse,指定哪个JVM / JRE / JDK将运行您的程序是一回事,但它可以在不同的Java版本中运行您的程序。
  2. 对于NetBeans,请查看以下内容:linklink,也可能需要项目级设置。
  3. IntelliJ:将项目级别设置为7:link