java.lang.NullPointerException并返回代码

时间:2017-03-16 10:13:22

标签: java linux bash opencv

我从bash运行一些java二进制文件,如:

run_me.sh

$JAVA_HOME/bin/java -Djava.library.path=path1/libs/opencv/lib -jar path2/bin/application.jar
echo "Exit code: "$?

但是在应用程序内部我得到java.lang.NullPointerException,但是返回代码是0,但是我需要一些非零退出代码来从bash中理解应用程序失败。

处理此类案件的正确方法是什么?

更新

这是一个嵌套'的例子。尝试catch块,当我在inner_package_class中抛出异常时返回代码为0.那么从inner_package_class.method1()获取异常的正确方法是什么?

public static void main(String[] args) {

    try {
        inner_package_class.method1();
        System.out.printf("After inner method!\n");
    } catch (Throwable t) {
        System.exit(1); 
    }
}

public class inner_package_class {

    public static void method1() {

        System.out.printf("From inner method!\n");

        try
        {
            throw new Exception("Some exception 2.");
        } catch (Throwable t) {

        }

    }
}

更新1: 这项工作符合预期(返回非零退出代码)。

public class inner_package_class {

    public static void method1() throws Exception {
        System.out.printf("From inner method!\n");

        throw new Exception("Some exception 2.");
    }
}

2 个答案:

答案 0 :(得分:0)

您可以在main方法周围添加try-catch-block并使用

System.exit(1)

当你抓住一个Throwable

public static void main(String[] args) {
  try {
     ... // your original code
  } catch (Throwable t) {
     // log the exception 
    t.printStacktrace(); // or use your logging framework 
    System.exit(1); 
  }
}

答案 1 :(得分:0)

返回代码由System的exit方法设置:顺便说一句,例如,如果你想在异常情况下返回-1,你可以按照以下步骤操作:在你的Main类中你必须捕获所有throwable(所以你将处理所有可能的情况)。这是一个例子

public static void main(String[] args) {
try { YOUR CODE 
} catch(throwable t){
System.exit(-1);
}
System.exit(0);
}  

代码显示如何在异常的情况下返回-1,在成功的情况下返回0。