可以退出代码还是应该终止 main?
Is it okay to exit code or should I terminate main?
我是异常处理的新手,如果发生意外情况,我不知道在哪里停止我的代码。
我有一个处理命令行参数的程序。我将参数和值存储在 HashMap 中。我有一个名为 getAlgortihm 的方法,它应该从地图中获取算法。例如:参数:-alg shift,方法 returns shift。值转移是必要的,因为另一种方法使用它来决定下一步做什么。
public String getAlgorithm() {
return argumentMap.get("-alg");
}
不给-alg(参数:-alg错了shift)可以退出代码吗?
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)
我是异常处理的新手,如果发生意外情况,我不知道在哪里停止我的代码。
我有一个处理命令行参数的程序。我将参数和值存储在 HashMap 中。我有一个名为 getAlgortihm 的方法,它应该从地图中获取算法。例如:参数:-alg shift,方法 returns shift。值转移是必要的,因为另一种方法使用它来决定下一步做什么。
public String getAlgorithm() {
return argumentMap.get("-alg");
}
不给-alg(参数:-alg错了shift)可以退出代码吗?
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)