有没有办法可以设置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.");
}
}
答案 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
}
}