栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实验4-1【数组下标越界异常处理】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实验4-1【数组下标越界异常处理】

文章目录
  • 前言
  • 一、任务介绍
    • 1.任务描述
    • 2.运行结果
    • 3.任务目标
    • 4.实现思路
  • 二、程序实现
    • 1.代码
    • 2.实验结果(输出结果)
  • 三、总结

前言 一、任务介绍 1.任务描述

编写程序,捕获并处理数组越界异常。
1、定义长度为10的数组,并赋初始值。
2、数组下标从0到10循环遍历数组,输出数组元素的值。
3、使用异常处理语句检测上述输出语句,控制程序正常退出
(1)然后在捕获处理时调用toString方法,实现以下运行效果。

(2)当满足产生异常对象条件时,结合throw抛出一个具体的由异常信息构建的ArrayIndexOutOfBoundsException异常对象。
然后在捕获处理时调用toString方法。
实现以下运行效果

2.运行结果

如上所示

3.任务目标

 学会利用try…catch…finally处理异常,控制程序正常退出。
 掌握调用异常类的toString、getMessage、printStackTrace
相关方法输出异常信息。
 掌握用异常信息组合成字符串再构造具体异常对象,然后结合throw将异常对象抛出的方法。

4.实现思路

1、数组越界异常(IndexOutOfBoundsException)是运行时异常,程序员是可以不处理的,虚拟机可以处理,但处理的结果是非正常退出。故本题希望通过程序员自己处理,以便用来控制程序正常退出。
2、怎么处理呢?在整个输出数组的过程中,每一次访问数组元素,如果数组下标越界都可能出问题。我们想要的结果是只要第一次越界就报相应的异常信息,结束数组的整个访问。那就应该把整个for循环放到try中,结合catch进行捕捉处理。
3、如果只是要控制正常退出,那完全不用自定义异常类,因为Java里本身就有ArrayIndexOutOfBoundsException。
4、要获得一个具体的ArrayIndexOutOfBoundsException异常类对象,就需要调用ArrayIndexOutOfBoundsException异常类的有参构造方法,该方法接收一个字符串作为参数,那么我们就可以在发生异常时将引发异常的当前下标i和当前数组的长度值组合成一个串去构造就行。

二、程序实现 1.代码
public class Main {

    public static void main(String[] args) {
        int[] a=new int[10] ;
        int i;
        for(i=0; i<10; i++)
            a[i] =i;

        try{
            for(i=0; i<=10; i++) {
                if(i>=a.length){
                    throw new ArrayIndexOutOfBoundsException("当前要访问下标为:"+i+",数组长度为"+a.length+",发生数组越界异常");
                }
                else{
                    System.out.print(a[i]+" ");
                }
            }

        }
        catch(ArrayIndexOutOfBoundsException e){
            System.out.println();
            System.out.println(e.toString());
        }
        finally {
            System.out.println("由程序员负责处理越界异常");



2.实验结果(输出结果)

三、总结
  1. 如果在try里在数组遍历后写throw无法正确达到实验要求结果输出异常,因为异常后面的语句不会再执行
  2. 解决方法:加上判断语句,如果判断为异常直接抛出,如果不是就正常输出
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/885616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号