Java-如何确保使用try catch输入正确的命令行参数?

时间:2018-08-05 18:00:06

标签: java validation try-catch

对不起,我是菜鸟...

我有一个方法,该方法需要两个特定的命令行参数来创建对象:

Number data = new Number(arg[0], arg[1]);

可接受的参数是:

  • arg[0]只能是:102030
  • arg[1]只能是:246

如何创建一个try and catch异常,以确保提供了两个参数并且该参数是可接受的?

提前感谢您的时间。

3 个答案:

答案 0 :(得分:2)

您绝对不能使用try-catch控制流-这是一种不好的做法。因此,存在if-else语句。

boolean conditionArg0 = arg[0] == 10 || arg[0] == 20 || arg[0] == 30;
boolean conditionArg1 = arg[1] == 2  || arg[1] == 4  || arg[1] == 6;

if (conditionArg0  && conditionArg1) {
    // input is fine, go on
} else {
    // display error
}

您应首先检查数组arg是否至少具有2个值,否则将抛出NullPointerException

如果允许的值更多,最好使用Set<Integer>并搜索该值是否存在。如果允许的值遵循一个模式(例如可以被10整除),那么最好使用计算代替Set


编辑:为什么使用try-catch控制流被认为是不好的做法? herehere已经讨论了很多次。有很多争论,我发现最重要的争论(取自here):

  

例外是针对特殊情况,而不是正常的流量控制。应该使用异常处理来处理意外的/异常情况,而不是像正常的程序流程那样处理,因为否则,未捕获的异常将告诉您更少的信息。

在语义上,使用if-else是控制流量的一种干净方法。您应该始终以if-else开始,并进行重构,以防被比较元素的数量显着增加。

答案 1 :(得分:0)

基于评论

  1. 首先检查输入的长度是否恰好为2。

  2. 检查是否相等。

代码:

for file in "(*) - (*)" ; do mv "${file}" "$(($1+5)) - ${2}" ; done

答案 2 :(得分:0)

通过创建自定义异常类,这不是一个好主意。使用if else既容易又好