我尝试使用System.exit(0)
,但是既不执行finally
块也不执行休息代码。
还尝试了return
,它将执行finally
块,但不会执行其余代码
private static void testMethod() {
try {
System.out.println("try Block");
// Skip Finally Block.
//return;
// System.exit(0);
} catch (Exception e) {
System.out.println("catch Block");
} finally {
System.out.println("Finally Block");
}
System.out.println("After Finally Block.");
}
输出应为
try Block
After Finally Block.
OR
try Block
catch Block
After Finally Block.
答案 0 :(得分:5)
您无法阻止finally
块中的代码运行;这就是finally
块的作用。
您可以设置一个标志并将其在if
块中的代码周围的finally
中使用:
private static void testMethod() {
boolean skip = false;
try {
System.out.println("try Block");
// Point A
skip = true;
// Point B
} catch (Exception e) {
System.out.println("catch Block");
} finally {
if (!skip) {
System.out.println("Finally Block");
}
}
System.out.println("After Finally Block.");
}
如果代码在上方的A点抛出,您将看到“最终阻止”。如果代码在上面的B点抛出,则不会。
这通常是反模式。通常有可能以更好的方式解决实际情况。