gpt4 book ai didi

java - 如果 Java 文件抛出异常,如何返回非零退出代码

转载 作者:行者123 更新时间:2023-11-30 07:28:04 25 4
gpt4 key购买 nike

我正在使用下面的脚本(.sh 文件)在 UNIX 系统中运行 java 代码,但即使 Java 在这两种情况下都给出异常或成功终止,退出代码为 0,如果 Java 运行抛出异常,我想从脚本返回非零退出代码,以便我可以添加 if-then checkin 脚本,以打印成功或失败消息。

#!/bin/sh
echo 'processing started -->>'
LOC=/opt/appl/Mapping/

export JAVA_HOME=/usr/java6
export PATH=/usr/java6/bin

LD_LIBRARY_PATH=/opt/appl/JARS/

export LD_LIBRARY_PATH

java -classpath $LOC/ojdbc6-11.2.0.3.0.jar:$LOC/ds35-02.00.11.jar:$LOC/log4j-1.2.17.jar:$LOC/TestClasses.jar:$LOC/db2jcc_license_cisuz-3.0.0.jar:$LOC/db2jcc_license_cu-3.0.0.jar:$LOC/db2jcc-3.0.0.jar -Xms256M -Xmx512M com.home.backfill.TestRun

我可以在Java文件中使用Try-catch并在catch block 中使用System.exit(1),但我正在寻找任何好的通用方法,因为我的代码可能很长,而不是确定将 System.exit(1) 放入每个 catch block 中是否是个好主意。

最佳答案

如果你想要通用的东西:

interface ExceptionAction { 
public void apply() throws Exception;
}

class Catcher {

public static void invoke(ExceptionAction ea) {
try{
ea.apply();
} catch(Exception e) {
System.exit(1);
}
}

}

然后通过创建 lambda 来调用。 (您必须将任何“返回”值设置为捕获的局部变量):

Catcher.invoke(() -> {
/// your code here
});

我会注意到,这与 try/catch 一样冗长,而后者可能更具可读性/口语化。

关于java - 如果 Java 文件抛出异常,如何返回非零退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36543900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com