我正在学习java中的异常。我遇到了以下问题:
String bigstring = myscanner.nextLine();
String[] splited = bigstring.split("\\s+");
try {
smallstring1 = splited[0];
smallstring2 = splited[1];
smallstring3 = splited[2];
} catch(java.lang.ArrayIndexOutOfBoundsException exc) {
smallstring3 = null;
}
如果用户只想输入2个单词,这将有效。
如果他想输入一个单词怎么办?
我们可以以某种方式指定冒号后出错的值吗?
像:
java.lang.ArrayIndexOutOfBoundsException: 2
或
java.lang.ArrayIndexOutOfBoundsException: 1
我们可以在try / catch块中以某种方式使用(对于此示例)此“2”或“1”吗?
答案 0 :(得分:2)
java.lang.ArrayIndexOutOfBoundsException
不是一个可以恢复的例外。它传达了编程错误
因此,不应试图理解导致问题的索引,而应该确保不会发生异常。
在你的情况下,你应该在尝试获取它的值之前检查数组的大小。
以下是一个例子:
int arraySize = splited.length;
if (arraySize == 3){
smallstring1=splited[0];
smallstring2=splited[1];
smallstring3=splited[2];
}
else if (arraySize == 2){
smallstring1=splited[0];
smallstring2=splited[1];
}
else if (arraySize == 1){
smallstring1=splited[0];
}
答案 1 :(得分:1)
您可能不应该对正常的程序流使用异常。例外通常应该是“例外”。
无论如何,虽然你不能这样做,但你可以在catch块中使用if语句。您还可以检查splited.length
以检查阵列的大小。