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

问题描述 投票:1回答:2

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

我有一个处理命令行参数的程序。我将带有值的参数存储在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");
}

或者我应该在调用方法的地方抛出异常并处理它?

public String getAlgorithm() {
        if (argumentMap.get("-alg") == null)
            throw new NullPointerException("-alg is not given");
        return argumentMap.get("-alg");
}
java exception exit
2个回答
2
投票

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

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


0
投票

只需尝试使用适当的错误消息而不是System.exit(1)引发自定义异常,就可以了>

© www.soinside.com 2019 - 2024. All rights reserved.