我是异常处理的新手,如果发生意外情况,我不知道在哪里停止我的代码。
我有一个处理命令行参数的程序。我将带有值的参数存储在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");
}
从函数执行退出是不良的编程习惯。这也使得无法测试这种功能。
在这种情况下,如果函数出错,则应引发异常,然后调用代码可以根据需要对其进行处理。这也使代码可测试,因为您的测试可以调用并期望得到一个异常,该异常是错误中的正确行为。
只需尝试使用适当的错误消息而不是System.exit(1)引发自定义异常,就可以了>