JAVA大家帮帮我,我的组数自定义异常用使用throw抛出到main函数的,但是main函数的catch块没有捕获到异常

JAVA大家帮帮我,我的组数自定义异常用使用throw抛出到main函数的,但是main函数的catch块没有捕获到异常,请大家看看我的哪里哪里有逻辑错了,小弟初学者好多... JAVA大家帮帮我,我的组数自定义异常用使用throw抛出到main函数的,但是main函数的catch块没有捕获到异常,请大家看看我的哪里哪里有逻辑错了,小弟初学者好多不会,谢谢了。代码入下:
第一个类:

第二个类:

第一个类:
package god.yaoshun.MyExceptioner
public class MyException extends Exception {
String message;

//构造方法初始化
public MyException(String ErrorMessage){
message= ErrorMessage;
}

@Override
public String getMessage() {
return message;

}
}
————————————————————————————————————————————
第二个类:
package god.yaoshun.MyExceptioner;

public class MyExceptionTest {

public static int array(int k) throws MyException {
int[] arr = new int[k];

for (int i = 0; i < k + 1; i++) {
System.out.println(arr[k]);

}
throw new MyException("数组下标越界!");
}

public static void main(String[] args) {

try {
array(2);
} catch (MyException e) {
//为什么这里没有捕获到异常啊~上面的我代码哪里有问题了
System.out.println("捕获到异常");
System.out.println(e.getMessage());
} finally {
System.out.println("请重新修改数组");
}

}
}
看吧,我运行过后并没有显示catch块中的语句呢!
展开
 我来答
百度网友090def6
推荐于2016-01-10 · TA获得超过2211个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:706万
展开全部
for (int i = 0; i < k + 1; i++) {
    System.out.println(arr[k]); // 这里有问题,你使用的是k
}
throw new MyException("数组下标越界!");

根据array(2); ,k = 2,所以

System.out.println(arr[k]);  这里就 报错了,程序执行不到throw new MyException("数组下标越界!"); 这行,

因此你捕获不到MyException 异常;

如果仅仅只是测试自定义异常,改成下面的代码,运行下看看效果

for (int i = 0; i < k + 1; i++) {
   throw new MyException("数组下标越界!");
}

亲,如果回答满意,请及时采纳,你的合作是我回答的动力,谢谢!!!

追问
额 改一个代码就正确了,我想请问一下,我先前在for循环里面输出arr[k+1]为什么逻辑错误了呢,我想了半天想明白头都晕了~~arr[k+1]不是超出数组了吗?
追答
public static int array(int k) throws MyException {
    int[] arr = new int[k]; // 定义了一个数组,长度k

    for (int i = 0; i < k + 1; i++) {
        System.out.println(arr[k]); // 这里你没有直接使用循环变量i,而是直接使用k
        // 由于数组下标从0开始,因此arr 最大下标=k-1
        // 所以arr[k] 直接下标越界了,抛出异常
    }
    throw new MyException("数组下标越界!");
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式