可以退出代码还是应该终止main?

时间:2019-12-22 13:21:40

标签: java exception exit

我是异常处理的新手,如果发生意外情况,我不知道在哪里停止我的代码。

我有一个处理命令行参数的程序。我将带有值的参数存储在HashMap中。我有一个名为getAlgortihm的方法,该方法应该从地图上获取算法。例如:参数:-alg shift,该方法返回shift。价值转移是必要的,因为另一种方法使用它来决定下一步要做什么。

public String getAlgorithm() {
        return argumentMap.get("-alg");
}

如果没有给出-alg(参数:-alg错误移位),可以退出代码吗?

public String getAlgorithm() {
        if (argumentMap.get("-alg") == null){
            System.out.println("-alg is not given");
            System.exit(1);
        }
        return argumentMap.get("-alg");
}

还是应该在调用方法的地方抛出异常并处理它?<​​/ p>

public String getAlgorithm() {
        if (argumentMap.get("-alg") == null)
            throw new NullPointerException("-alg is not given");
        return argumentMap.get("-alg");
}

2 个答案:

答案 0 :(得分:4)

从函数执行退出是不良的编程习惯。这也使得无法测试这种功能。

在这种情况下,如果函数出错,则应引发异常,然后调用代码可以根据需要对其进行处理。这也使代码可测试,因为您的测试可以调用并期望得到异常,这是错误中的正确行为。

答案 1 :(得分:1)

只需尝试使用适当的错误消息而不是System.exit(1)抛出自定义异常