Java 从API阻止System.exit()

我使用的第三方库System.exit()在遇到异常时会执行a 。我从jar里使用API​​。无论如何,System.exit()由于它导致我的应用程序关闭,我可以阻止该调用吗?System.exit()由于其他许多许可问题,在删除后我无法反编译和重新编译jar 。我曾经在stackoverflow中遇到一个[我不记得的其他问题]的答案,我们可以使用SecurityManagerJava来做这样的事情。

回答:

基本上,它会安装一个安全管理器,该安全管理器会使用此处的代码禁用System.exit()

  private static class ExitTrappedException extends SecurityException { }

private static void forbidSystemExitCall() {

final SecurityManager securityManager = new SecurityManager() {

public void checkPermission( Permission permission ) {

if( "exitVM".equals( permission.getName() ) ) {

throw new ExitTrappedException() ;

}

}

} ;

System.setSecurityManager( securityManager ) ;

}

private static void enableSystemExitCall() {

System.setSecurityManager( null ) ;

}

以上是 Java 从API阻止System.exit() 的全部内容, 来源链接: utcz.com/qa/419839.html

回到顶部