Java multi catch 异常错误

标签 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。

最佳答案

在 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/

相关文章:

java - java如何检测Checked Exceptions?

java - 如何获取异常源对象

java - setSupportActionBar(工具栏工具栏) 在我的 Material 项目中不起作用

java - 最终确定期间对对象的引用

main 中的 C++ 异常

c# - 如何区分意外(骨头)异常与预期(外来)异常?

c# - 为什么 foreach 循环在某些情况下不起作用?

java - 使用 java 正则表达式匹配任何 unicode 字母

java - J2ME 学习指南

java - 为什么Java的CharsetEncoder定义.onMalformedInput()/CharsetDecoder定义.onUnmappableCharacter()?