gpt4 book ai didi

java - 正确处理异常

转载 作者:行者123 更新时间:2023-11-29 03:53:28 24 4
gpt4 key购买 nike

我不擅长处理异常,所以这个时候需要提示一下:我想将数组放入一个集合 (ArrayList) 中,所有数组的长度都应该相同。否则计算中会出现错误。当要在 ArrayList 中插入一个不需要长度的数组时,我想抛出一条异常消息。什么样的异常适合这种场合?

让我担心的是我必须检查要插入的数组的大小(使用 if 语句)。在 try block 中有一个 if 语句是否合理?

相关片段代码如下:

输入数据:数组列表

arraylength:第一个插入的数组指定的数组长度

有人可以修改 try - catch block 吗?

public void insertData(double[] arraydata){
if(this.inputdata.isEmpty()){
inputdata.add(arraydata);
this.arraylength = arraydata.length;
}else{
try {
if(this.arraylength == arraydata.length)
inputdata.add(arraydata);
}catch(Exception exception){
System.err.printf("Missmatch array dimensions in %d place",inputdata.size()+1);
}
}
}

最佳答案

异常(exception)应该只适用于特殊情况。如果这种情况经常发生,您可能希望以另一种方式处理它,在工作流中使用标准逻辑。例如,如果可以插入数据,则可以返回 true,如果要插入的数组长度不正确,则返回 false。或者您可以检查用户何时输入数组值,然后告诉他们长度必须是 x

如果这确实代表异常情况,则抛出 IllegalArgumentException , 如

if(this.arraylength == arraydata.length)
inputdata.add(arraydata);
} else {
throw new IllegalArgumentException("Ever array needs same length...");
}

类似的东西。

如所写,您的代码现在正在捕获 add 操作中抛出的任何异常。您应该在 insertData 方法中抛出异常,而不是捕获异常,如我的示例所示。应该在插入数据方法之外捕获异常。这意味着您不需要 insertData 中的 try/catch 语句。

另请注意,IllegalArgumentException 是一个运行时异常,因此如果您不想,则无需抛出或捕获它。如果你愿意,你仍然可以捕获它。

关于java - 正确处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7626317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com