public class TwoExcepProg {
public static void main(String[] args) {
try
{
int a = 50/0;
}
finally
{
System.out.println("finally block is called");
}
}
}
答案 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");
}