Java 关于在system.exit情况下执行最终阻塞,也可以通过添加shutdownhook
我开发了一个程序,其中return语句的情况在try块或catch块中,finally块最后执行,但当我写入system.exit在try块中时。在这种情况下,finally块未执行,但我仍要执行,请您告知我是否需要添加Java 关于在system.exit情况下执行最终阻塞,也可以通过添加shutdownhook,java,exception,Java,Exception,我开发了一个程序,其中return语句的情况在try块或catch块中,finally块最后执行,但当我写入system.exit在try块中时。在这种情况下,finally块未执行,但我仍要执行,请您告知我是否需要添加Runtime.getRuntime().addShutdownHook在这种情况下,我需要添加在任何情况下都应该执行的代码,即使调用了system.exit。请告知,下面是我的班级 public class Hello { public static void hell
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();
}
}
1) 通常,如果您想在退出后执行某些代码,您确实需要一个关闭钩子
public static void main(String[] args) throws Exception {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("bye");
}
});
hello();
}
2) 在这个具体的例子中,不需要shutdownhook,只需从代码中删除exit
public static void hello() {
try{
System.out.println("hi");
} catch (RuntimeException e) {
//
} finally{
System.out.println("finally is still executed at last");
}
}
当您呼叫系统时。退出(1) 它退出程序,JVM强制停止程序的执行 那么,如果希望在退出后执行某些代码,为什么要使用System.exit(1)
只需在您的try block中应用一些条件即可退出try block,这将导致在任何情况下都出现finnaly block非常感谢,正如您在我的上述程序中所建议的那样,我想在程序执行后通过shutdown hook打印简单的sop语句,请您通过在我的上述程序中进行代码更改来显示OK,添加了shudown钩子的示例