首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果Java文件抛出异常,如何返回非零退出代码

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

Stack Overflow用户
提问于 2016-04-11 08:48:24
回答 2查看 5.5K关注 0票数 2

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

代码语言:javascript
复制
#!/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文件中使用System.exit(1)并在catch块上使用System.exit(1),但是我正在寻找任何好的通用方法,因为我的代码可能很长,不确定在每个catch块中放置System.exit(1)是否是个好主意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 08:56:51

如果我正确地理解了您,为什么不运行一个通用函数来决定返回哪种代码呢?

代码语言:javascript
复制
try {
//your code here
} catch(YourException e){
   Handler.handle(e);
}

其中,Handler.handle(e)接受异常并确定关闭系统的整数。至少在这里,您有一个集中的点,系统将关闭。

票数 0
EN

Stack Overflow用户

发布于 2016-04-11 09:03:52

如果你想要一些通用的东西:

代码语言:javascript
复制
interface ExceptionAction { 
    public void apply() throws Exception;
}

class Catcher {

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

}

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

代码语言:javascript
复制
Catcher.invoke(() -> {
    /// your code here
});

我要指出的是,这与try/catch一样冗长,而后者可能更易读/更通俗。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36543900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档