调用Java主函数

Sun*_*nny 3 java exception

我试图调用另一个JAR的主要功能.现在,这个main函数包含在try和catch块下.

但是当主调用返回"NullPointerException"时,程序只是崩溃而不是捕获它.

所以,例如

try {
    somelibary.main()
}
catch (Exception e) {
    System.out.println("Exception Caught");
}
Run Code Online (Sandbox Code Playgroud)

此代码从main()捕获NullPointerException.有谁知道y的原因?

Wil*_*ill 5

其他主要功能可能正在进行自己的错误处理,例如

public static void main(String[] args) {
    try {
        ....
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果那是另一个主要功能正在做的事情,那么你将无法捕捉到它的异常.你有这个主要功能的代码吗?


ext*_*eon 5

如图所示,您的代码肯定会捕获引发的NullPointerException somelibrary.main().如果应用程序由于NullPointerException而无论如何都会停止,那么某些库有可能会捕获异常,转储堆栈跟踪并调用system.exit()

在这种情况下,问题不是如何捕获NPE,而是如何防止System.exit()实际退出.

当然,这个问题的答案可以在StackOverflow上找到,就在这里.只需在调用someLibrary之前安装SecurityManager,然后重置securityManager.