我已经开发了一个程序,其中return语句的情况在try块或catch块中最后块执行,但是当我在try块中写system.exit时,在这种情况下finally块没有被执行但是我仍然想要要执行,请问我是否需要添加Runtime.getRuntime().addShutdownHook
在这种情况下我需要添加应该在任何情况下执行的代码,即使调用system.exit也是如此。请指教,下面是我的班级
public class Hello {
public static void hello(){
try{
System.out.println("hi");
System.exit(1);
// return;
}catch(RuntimeException e)
{ //return;
}
finally{
System.out.println("finally is still executed at last");
}
}
public static void main(String[] args){
Hello.hello();
}
}
答案 0 :(得分:1)
1)一般来说,如果你想在退出
后执行一些代码,你需要一个关闭钩子public static void main(String[] args) throws Exception {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("bye");
}
});
hello();
}
2)在这个具体案例中,不需要关闭钩子,只需从代码中删除退出
public static void hello() {
try{
System.out.println("hi");
} catch (RuntimeException e) {
//
} finally{
System.out.println("finally is still executed at last");
}
}
答案 1 :(得分:0)
当您调用System.exit(1)
时它退出程序,JVM强制停止执行程序。
那么为什么要在退出
之后执行一些代码时使用System.exit(1)只需在你的try块中应用一些条件就可以退出try块,这会导致每个情况下的finnaly阻塞