catch和最后块的输出顺序不一致

时间:2017-08-01 11:38:24

标签: java try-catch

在尝试学习如何处理Java中的异常时,我注意到了这一点:

int[] intArray = new int[4];

void eDemoI(int i) {
    try {
        int myInt = intArray[i];
    } catch (ArrayIndexOutOfBoundsException e) {
        System.err.println("Your index was out of bounds.");
    } finally {
        System.out.println("This line always prints.");
    }
}

public static void main(String[] args) {
    ExceptionHandlingPractice P = new ExceptionHandlingPractice();
    P.eDemoI(5);
}

这是我感到困惑的地方。

如果我使用相同的输入(在这种情况下,5)背靠背运行几次,我似乎随机获得三个输出中的一个:

一:
Your index was out of bounds.This line always prints.

两个
Your index was out of bounds. This line always prints.


This line always prints. Your index was out of bounds.

这给我带来了这些问题:

  1. 为什么输出顺序会在catchfinally块之间发生变化?通过阅读诸如this之类的帖子,我希望它们在每次执行时以相同的顺序输出。

  2. 请注意,示例输出 One 表示句子之间缺少换行符。为什么呢?

  3. 感谢您的帮助。

0 个答案:

没有答案