# 问题和练习

> 原文： [https://docs.oracle.com/javase/tutorial/essential/exceptions/QandE/questions.html](https://docs.oracle.com/javase/tutorial/essential/exceptions/QandE/questions.html)

## 问题

1.  以下代码是否合法？

    ```
    try {

    } finally {

    }

    ```

2.  以下处理程序可以捕获哪些异常类型？

    ```
    catch (Exception e) {

    }

    ```

    使用这种类型的异常处理程序有什么问题？
3.  写入以下异常处理程序有什么问题吗？这段代码会编译吗？

    ```
    try {

    } catch (Exception e) {

    } catch (ArithmeticException a) {

    }

    ```

4.  将第一个列表中的每个情况与第二个列表中的项匹配。
    1.  __ error
    2.  __checked 异常
    3.  __compile 错误
    4.  __no 异常

    ## 演习

    1.  在 [``ListOfNumbers.java``](../examples/ListOfNumbers.java)中添加`readList`方法。此方法应从文件中读取`int`值，打印每个值，并将它们附加到向量的末尾。你应该抓住所有适当的错误。您还需要一个包含要读入的数字的文本文件。
    2.  修改以下`cat`方法以便编译。

        ```
        public static void cat(File file) {
            RandomAccessFile input = null;
            String line = null;

            try {
                input = new RandomAccessFile(file, "r");
                while ((line = input.readLine()) != null) {
                    System.out.println(line);
                }
                return;
            } finally {
                if (input != null) {
                    input.close();
                }
            }
        }

        ```

        [检查你的答案。](answers.html)
    1.  `int [] A;
        A [0] = 0;`
    2.  JVM 开始运行您的程序，但 JVM 找不到 Java 平台类。 （Java 平台类位于`classes.zip`或`rt.jar`中。）
    3.  程序正在读取流并到达`end of stream`标记。
    4.  在关闭流之前和到达`end of stream`标记之后，程序会尝试再次读取流。