写函数test(int[]number, inti),函数作用:表示访问数组第i个元素① 当有越界异常时候抛出异常 写主函数调用test。对异常进行验证 ①try catch处理 ②不处理异常,直接抛出异常。 ③try catch处理, catch块之中对捕获的异常,重新封装再抛出。 提示, new一个新的异常,然后抛出
时间: 2024-02-25 22:55:23 浏览: 60
浅析ASP.NET生成随机密码函数
好的,我理解你的问题了。这是一个关于异常处理的问题。下面是代码实现:
```
public class TestArray {
public static void test(int[] number, int i) throws ArrayIndexOutOfBoundsException {
System.out.println(number[i]);
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
int i = 4;
try {
test(arr, i); // 调用test函数
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界异常");
// 抛出新的异常
throw new RuntimeException("重新封装的异常信息", e);
}
}
}
```
在上面的代码中,我们定义了一个`test`函数,传入一个整型数组和一个整型参数`i`,表示访问数组第`i`个元素。如果`i`越界了,就抛出`ArrayIndexOutOfBoundsException`异常。
在`main`函数中,我们创建一个整型数组`arr`,并尝试访问第`4`个元素(越界了)。我们使用`try-catch`语句来捕获异常,如果捕获到了`ArrayIndexOutOfBoundsException`异常,就输出错误信息,并重新抛出一个新的异常。这个新的异常将原来的异常`e`作为参数传入,并且给出了新的异常信息。
我们可以多次运行这个程序,每次修改`i`的值来测试不同情况下的异常处理。如果我们要直接抛出异常,可以将`throw`语句写到`catch`语句块中,像这样:
```
public static void main(String[] args) throws ArrayIndexOutOfBoundsException {
int[] arr = {1, 2, 3};
int i = 4;
test(arr, i); // 直接抛出异常
}
```
这样就不需要使用`try-catch`语句了,而是将异常直接抛给调用者。
阅读全文