为数组长度设置ArrayIndexOutOfBound异常

时间:2015-04-21 20:23:32

标签: java arrays exception

有没有办法可以设置try并捕获ArrayIndexOutOfBound异常以检查数组大小是否大于3? 例如,如果参数数组args []包含多于3个值,那么我希望异常显示错误。

到目前为止,这是我的代码:

public static void main (String[] args){
try {
    args[4] = "four";
    } catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("Array index out of bounds.");
    }
}

6 个答案:

答案 0 :(得分:4)

您可以使用args.length来获取数组中元素的数量。

答案 1 :(得分:2)

是的,可以抛出异常,但我必须问为什么?数组的length属性将为您提供所需的内容

if ( args.length > 3 ){
   //do something here
}

答案 2 :(得分:1)

要抛出异常,您只需执行以下操作:

if (args.length > 3) {
   throw new AnyExceptionYouWant();
}

答案 3 :(得分:1)

您可以这样做:

if ( args.length > 3 ){
    throws new ArrayIndexOutOfBoundsException("Wrong array size! (actual: " + args.length + ", max: 3)");
}

答案 4 :(得分:1)

来自@copeg的评论, 你可以这样做:

        if ( args.length < 3 ){ 
        System.out.println("There I print my content, size is less than 3");
        //print your content 
        } 
        else if( args.length == 3 ) { //You didnt point out what you want to do if size is equal to 3
        System.out.println("Size is equal to 3");
        }
        else if( args.length > 3 ) {
         throw new ArrayIndexOutOfBoundsException("Out of Bounds Exc. Size is 4 or more"); 
        }

答案 5 :(得分:1)

你到底想要做什么?它可能有助于为您提供正确的方法。您的上述代码可能无法根据您的要求运行 - 您要求如果它的数量超过3,则应该抛出异常。但是,如果确实超过3,那么分配就可以了,并且不会抛出任何异常。

例如,假设您传入的字符串数组是:

args = ['arg1','arg2','arg3','arg4,'arg5']

因此当你拨打电话时

arg[4]= "four";

你的电话会成功,新的参数会导致:

args = ['arg1','arg2','arg3','arg4,'four'];

它将大于3,这是你正在寻找的,但不会抛出异常。在这种情况下,实际上没有办法抛出异常,因为技术上没有任何错误。如果您正在尝试识别这种情况并因某种原因抛出它,您可以执行以下操作:

public static void main (String[] args){
var maxAllowedSize = 3;
try {
    args[maxAllowedSize] = "four";
    } catch (ArrayIndexOutOfBoundsException e) {
      System.out.println("Array index out of bounds.");
    }

if (args.length > maxAllowedSize) {
  System.out.println("the length is too large " + args.length);
  throw new Exception(); //better to make a specific Exception here
  }
}