为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哔哔one 2021-06-18 18:01:41
抱歉我是菜鸟...我有一个方法,它需要两个特定的命令行参数来创建一个对象:Number data = new Number(arg[0], arg[1]);可接受的参数是:arg[0]只能是:10,20或30。arg[1]只能是:2,4或6。如何创建 try 和 catch 异常以确保提供了两个参数并且这些参数是可接受的?提前感谢您的时间。
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

您绝对不会使用控制流程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被认为是不好的做法来控制流量?这里和这里已经讨论过很多次了。有很多论点,我发现最重要的是(取自此处):


异常是针对异常情况,而不是针对正常的流量控制。应该使用异常处理来处理意外/异常情况,而不是作为正常的程序流程,否则,未捕获的异常将告诉您的信息少得多。


从语义上讲,使用if-else是一种控制流的干净方式。如果if-else比较元素的数量显着增加,您应该始终开始并重构。


查看完整回答
反对 回复 2021-06-30
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

通过创建您的自定义异常类,但这不是一个好主意。使用 if else 既简单又好


查看完整回答
反对 回复 2021-06-30
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

根据评论,

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

  2. 检查是否相等。

代码:

if(arg!=null && arg.length==2){

    if( (arg[0].equals("10") || arg[0].equals("20") || arg[0].equals("30"))

       && (arg[1].equals("2") || arg[1].equals("4") || arg[1].equals("6")) ) {

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

    }

    else{

        //Handle wrong input(s)

    }

}

else{

    //Handle wrong input(s)

}


查看完整回答
反对 回复 2021-06-30
  • 3 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信