我已经多次检查这段代码,但我无法弄清楚为什么它会返回有关 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。
最佳答案
在 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)
是正确的语法。
关于Java multi catch 异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429811/