我跑一些Java二進制從慶典,如:顯示java.lang.NullPointerException並返回代碼
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
,howewer返回碼爲0,但我需要一些非零退出代碼來理解bash應用程序失敗。
什麼是處理這種情況的正確方法?
更新:
這裏是「套」嘗試catch塊的exxample,當我在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.");
}
}
返回代碼取決於應用程序的功能,默認情況下是'return 0',我不知道是否可以更改那個。 – SomeJavaGuy
請編輯您的問題幷包含該例外的堆棧跟蹤。特別是,主線程中是否發生異常是相關的;如果沒有,你需要通知主線程(或者哪個線程調用System.exit)失敗。 – VGR