异常处理:在每次运行中为相同的代码获取不同的输出

时间:2017-05-20 19:54:31

标签: java exception-handling try-catch try-catch-finally try-finally

我在程序的每次运行中获得不同的输出。第一次执行时,它会给出enter image description here

再次执行时,它 enter image description here 请告诉我它为什么会发生。

public class TwoExcepProg {
    public static void main(String[] args) {
        try
        {
            int a = 50/0;
        }
        finally
        {
            System.out.println("finally block is called");
        }
    }
}

2 个答案:

答案 0 :(得分:3)

您传播一个导致程序崩溃的异常。

在这些条件下,您不应期望出现已停止程序的异常输出(由System.err.println()方法写入的输出)和finally方法写入的输出)的优雅和严格的顺序。 1}}语句(由System.out.println()方法写的输出),因为这两个不同的流不一定同时刷新。

您应该处理异常以防止此行为:

public static void main(String[] args) {
    try {
        int a = 50 / 0;
    } 
    catch (Exception e) {
        // exception handling
    }
    finally {
        System.out.println("finally block is called");
    }
}

答案 1 :(得分:0)

编译器有时很慢,有时速度快,因为你得到两个不同的结果。

这不是问题,真正的问题是,您必须捕获您的异常,以获取正确的Exception以及代码中有关问题的正确信息,以便您可以使用此代码:

try {
    int a = 50 / 0;
    Thread.sleep(200);
} catch (InterruptedException e) {
    //Exception
} finally {
    System.out.println("finally block is called");
}