我已经多次检查过这段代码了,我无法弄清楚为什么它会在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。
答案 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)