文章目录

  • 前言
  • 一、任务介绍
    • 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. 解决方法:加上判断语句,如果判断为异常直接抛出,如果不是就正常输出

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

  1. 5.java.lang.IndexOutOfBoundsException(数组下标越界异常)

    5.java.lang.IndexOutOfBoundsException(数组下标越界异常) 参考文章: (1)5.java.lang.IndexOutOfBoundsException(数组下标越 ...

  2. java中怎么判断数组下标越界_初学java遇到疑惑,数组下标越界,求解答!

    一个学生考试成绩录入程序的模块化设计,在编译时出现了数组下标越界 错误提示:Exception in thread "main" java.lang.ArrayIndexOutOf ...

  3. Java实验——设计一个数组模型,用于存储体育项目成绩男生体育项目有足球、长跑和铅球,女生体育项目有跳舞、体操、游泳。设计排序算法,将变量a、b、c中的数值按大小顺利进行互换(从大到小排列)。

    设计一个数组模型,用于存储体育项目成绩:男生体育项目有足球.长跑和铅球,女生体育项目有跳舞.体操.游泳. import java.util.Scanner;public class DataArray ...

  4. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))     二维数组(二维数组的遍历.排序.查找.定义 ...

  5. [Java实验 5] 异常处理

    实验题目 一. 实验目的 1.了解 Java 中的异常类. 2.学会使用异常模式 try-catch-finally. 3.掌握自定义异常处理. 二.实验环境 1.硬件环境:个人 PC 机 2.软件环 ...

  6. java实验四结果,java实验四异常处理.doc

    java实验四异常处理.doc 实验四异常处理一.实验目的1.掌握异常的概念和Java异常处理机制.2.掌握异常的定义.抛出和捕捉处理.二.实验内容与要求1.仔细读下面的JAVA语言源程序,自己给出程 ...

  7. java数组使用实验报告_JAVA数组与类的定义-java实验报告

    JAVA数组与类的定义-java实验报告 JAVA数组与类的定义-java实验报告 .实验目的与要求 1. 熟悉Java类.对象和方法的一般操作练习等. 2. 熟悉数组等的定义和使用. 二.实验内容及 ...

  8. java数组下标越界的问题

    java数组下标越界的问题: 最近一直出现这类问题:数组下标越界 举例说明: Exception in thread "main" java.lang.ArrayIndexOutO ...

  9. java二维数组杨辉三角_实验----Java的二维数组的应用及杨辉三角的编写

    (1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...

最新文章

  1. LeetCode 316. Remove Duplicate Letters--贪心--Java,C++,Python解法
  2. html css 让元素居中显示,html – CSS:如何在居中元素周围对齐元素?
  3. [SCOI2010]股票交易
  4. SQLServer 2005删除无主键表中的重复项
  5. 以太网实习_物联网通信硬件入门项目—光纤收发器(1)——实习内容,适用范围,技术及收益...
  6. jvisualvm安装Visual GC插件
  7. Java之ThreadLocal
  8. Qt 第一步 HelloWorld 的第一个程序
  9. python现在时间减去过去时间等于20分钟怎么写_获取当前时间减去10分钟的话SQL语句怎么写...
  10. c++怎么可以在二进制文件中读取带string的数据_文件处理 | csv文件读写
  11. Linux 下安装JDK1.8
  12. Protocol Buffer 序列化原理大揭秘
  13. JDK中的SPI和Spring中的SPI
  14. 小象机器学习(邹博老师)学习笔记
  15. 液晶显示器背光测试软件,液晶屏背光灯驱动板故障检测方法_维修技术
  16. 关于短信猫死机的问题程序要如何解决
  17. 让Excel窗口保持在所有窗口前面
  18. 苹果cms后台登录验证码错误或显示不出来解决方法
  19. 雅虎邮箱为什么停止服务_雅虎的发展项目将变成什么样?
  20. chm sharp安卓版_CHM 阅读器

热门文章

  1. python 获取屏幕颜色_Python3 获取手机屏幕指定坐标点的 RGBA 和 16 进制颜色
  2. SI512国产13.56MHz低功耗NFC前端芯片替代PN532/PN512
  3. Numpy之logspace
  4. 【Vue 实战项目】后台管理系统登录页详解附源码
  5. Android Animator(Android动画)
  6. [Android Studio]开发APP应用出现软件程序打开闪退的排错
  7. SEO优化:自建站图片优化攻略
  8. Android 5.1.1 源码目录结构说明
  9. 中小型项目请求限流设计
  10. 怎么做网线,网线水晶头接法和线序(图文详解)