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

抱歉我是菜鸟...

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

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

可接受的参数是:

  • arg[0]只能是:10,2030

  • arg[1]只能是:2,46

如何创建 try 和 catch 异常以确保提供了两个参数并且这些参数是可接受的?

提前感谢您的时间。


哔哔one
浏览 163回答 3
3回答

森栏

您绝对不会使用控制流程try-catch- 这是不好的做法。为此,有if-else声明。boolean conditionArg0 = arg[0] == 10 || arg[0] == 20 || arg[0] == 30;boolean conditionArg1 = arg[1] == 2&nbsp; || arg[1] == 4&nbsp; || arg[1] == 6;if (conditionArg0&nbsp; && conditionArg1) {&nbsp; &nbsp; // input is fine, go on} else {&nbsp; &nbsp; // display error}您应该首先检查数组arg是否至少有 2 个值,否则NullPointerException将抛出 。如果存在更多允许值,最好使用Set<Integer>并搜索该值是否存在。如果允许的值遵循某种模式(例如可被 10 整除),那么最好使用计算而不是Set.编辑:为什么使用try-catch被认为是不好的做法来控制流量?这里和这里已经讨论过很多次了。有很多论点,我发现最重要的是(取自此处):异常是针对异常情况,而不是针对正常的流量控制。应该使用异常处理来处理意外/异常情况,而不是作为正常的程序流程,否则,未捕获的异常将告诉您的信息少得多。从语义上讲,使用if-else是一种控制流的干净方式。如果if-else比较元素的数量显着增加,您应该始终开始并重构。

幕布斯6054654

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

鸿蒙传说

根据评论,首先检查输入的长度是否正好为 2。检查是否相等。代码:if(arg!=null && arg.length==2){&nbsp; &nbsp; if( (arg[0].equals("10") || arg[0].equals("20") || arg[0].equals("30"))&nbsp; &nbsp; &nbsp; &nbsp;&& (arg[1].equals("2") || arg[1].equals("4") || arg[1].equals("6")) ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Number data = new Number(arg[0], arg[1]);&nbsp; &nbsp; }&nbsp; &nbsp; else{&nbsp; &nbsp; &nbsp; &nbsp; //Handle wrong input(s)&nbsp; &nbsp; }}else{&nbsp; &nbsp; //Handle wrong input(s)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java