Java数组索引异常产生及解决方案

这篇文章主要介绍了Java数组索引异常产生及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

通过索引查询数组值

public class DemoArrayException {
  public static void main(String[] args) {
    int[] array = {0, 1, 2, 3};

    int element = DemoArrayException.getElement(array, 4);
  }

  public static int getElement(int[] array, int index) {
    return array[index];
  }
}

很容易知道,数组array的元素个数是4个,不过索引值是从0开始的,所以最大索引是3。

其中,getElement方法是获取数组指定索引位置的值的。

运行程序,抛出错误

ArrayIndexOutOfBoundsException: 4

开始分析

这里通过getElement()方法,访问了array数组的4索引,这个时候,JVM就会检测到程序中出现异常。JVM检测出异常,它就会根据异常产生的原因,创建一个异常对象ArrayIndexOutOfBoundsException("4"),这个异常对象包含了内容、原因、位置。接着,JVM就会访问getElement方法,发现该方法中没有处理逻辑(try...catch),这时候,JVM就会把异常对象ArrayIndexOutOfBoundsException("4")抛出给方法的调用者main方法来处理这个异常。

main方法接收到JVM抛出的异常对象ArrayIndexOutOfBoundsException("4"),而main方法也没有处理逻辑(try...catch),于是继续把对象抛出给main方法的调用者JVM处理。

JVM接收到main方法抛回来的异常对象后,会把异常对象的内容、原因、位置以红色字体打印在控制台。然后JVM会终止当前正在执行的Java程序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JAVA实现空间索引编码——GeoHash的示例

    之前自己在做基于Lucene的内容检索过程中,了解到Lucene可以实现对文本信息,数值信息的内容检索,对于空间距离好像并为为源码中实现:最近半年自己接触到Solr,里面有一个空间距离检索(经纬度),最近对其中的实现做了下学习,了解到在实现空间距离检索的有一个比较常用的技术--GeoHash,下面就介绍下GeoHash. GeoHash特点 GeoHash用一个字符串表示经度和纬度两个坐标,比如我现在所在位置的GeoHash值为 wx4sv61q: GeoHash标识的并不是一个点,而是一个区域

  • Java使用分治算法实现排序数索引功能示例【二分搜索】

    本文实例讲述了Java使用分治算法实现排序数索引功能.分享给大家供大家参考,具体如下: /** * Find the first q and return the index * First method is brutal force * Second may * be Divid and Conquer * * @author open201 * */ public class Ono { /** * f(n) = s.length = n; * * @param s * @param q

  • mongodb索引知识_动力节点Java学院整理

    我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃. 从算法上来说有5种经典的查找,具体的可以参见我的算法速成系列,这其中就包括我们今天所说的"索引查找",如果大家对mysql比较了解的话,相信索引查找能给我们带来什么样的性能提升吧. 我们首先插入10w数据,上图说话: 一:性能分析函数(explain) 好了,数据已经插入成功,既然我们要做分析,肯定要有分析的工

  • java多线程处理执行solr创建索引示例

    复制代码 代码如下: public class SolrIndexer implements Indexer, Searcher, DisposableBean { //~ Static fields/initializers ============================================= static final Logger logger = LoggerFactory.getLogger(SolrIndexer.class); private static fi

  • Java应用开源框架实现简易web搜索引擎

    引言 应用 Java 的开源库,编写一个搜索引擎,这个引擎能爬取一个网站的内容.并根据网页内容进行深度爬取,获取所有相关的网页地址和内容,用户可以通过关键词,搜索所有相关的网址. 具体功能 (1) 用户可以指定爬取一个url对应的网页的内容. (2) 对网页内容进行解析,并获取其中所有的url链接地址. (3) 用户可以设定爬取深度,代表着从初始url对应的页面开始,可以爬取其中所有的url对应的网页内的url,以此类推.深度越大,能爬取到的网站越多. (4) 对爬取到的url内容进行保存.建立

  • java实现简单的搜索引擎

    记得java老师曾经说过百度的一个面试题目,大概意思是"有1W条无序的记录,如何从其中快速的查找到自己想要的记录".这个就相当于一个简单的搜索引擎.最近在整理这一年的工作中,自己竟然已经把这个实现了,今天对其进一步的抽象,和大家分享下. 先写具体的实现代码,具体的实现思路和逻辑写在代码之后. 搜索时用于排序的Bean /** *@Description: */ package cn.lulei.search.engine.model; public class SortBean { p

  • Java使用强大的Elastisearch搜索引擎实例代码

    Elastisearch是一个很强大,易用的搜索引擎 在系统上运行Elastisearch只需以下几步 1.下载Elastisearch 复制代码 代码如下: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.zip 2.解压 unzip elasticsearch-5.4.0.zip 3.运行 elasticsearch-5.4.0/bin/elasticsearch 这时有可能会直接被K

  • java编程实现根据EXCEL列名求其索引的方法

    本文实例讲述了java编程实现根据EXCEL列名求其索引的方法.分享给大家供大家参考,具体如下: 原理: [a1-z26]*26^n-1 + [a1-z26]*26^n-2 + ... + [a1-z26]*26^0 具体代码如下: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.util.HashMap; import jav

  • Java中EnumMap代替序数索引代码详解

    本文研究的主要是Java中EnumMap代替序数索引的相关内容,具体介绍如下. 学习笔记<Effective Java 中文版 第2版> 经常会碰到使用Enum的ordinal方法来索引枚举类型. public class Herb { public enum Type { ANNUAL, PERENNIAL, BIENNIAL }; private final String name; private final Type type; Herb(String name, Type type)

  • Java数组索引异常产生及解决方案

    这篇文章主要介绍了Java数组索引异常产生及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过索引查询数组值 public class DemoArrayException { public static void main(String[] args) { int[] array = {0, 1, 2, 3}; int element = DemoArrayException.getElement(array, 4); } publ

  • java.lang.NullPointerException异常问题解决方案

    java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性. 给出三种情况, 第一种情况,在启动类中定义了引用类型变量,赋值为空: /** * 引用类型变量没有指向对象所引起的空指针异常 * @author Superhero * @version 2018年12月16日上午10:32:43 */ //图书类 class Books { private String name;

  • java数组中的异常类型整理

    对于程序中出现异常,是很多程序员不想看到的情况,因为这就需要我们去查询异常的原因,然后进行一些处理异常的操作.在Java数组操作时,也会有一些异常情况的发生.这里我们罗列出了两种:ClassCastException和NullPointerException,下面我们来看一下具体的介绍. 1.异常种类 检查型异常和非检查型异常的主要区别在于其处理方式.检查型异常都需要使用try,catch 和finally 关键字在编译器进行处理,否则会出现编译器报错.对于非检查型异常则不需要这样做.Java中

  • SpringBoot异常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解决方案

    今天在使用SpringBoot创建了一个项目出现如下异常 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'documentationPluginsBootstrapper': Resolution of declared constructors on bean Class [springfox.documentation.spring.web.plugins.Docu

  • java.lang.NumberFormatException异常解决方案详解

    前言:        在做后台时用的jsp开发,在页面向controller传参时用String接收的参数,但是数据库实体中jies接收该参数时是int类型,做了一下强制转换,但是没有判断去空格,结果页面加载时就报500错误了. 错误截图: 在报错后注意分析报错信息,如上图提示在ShopController.java 的92行出错了,那么错误就很容易定位了,去看那里的代码. 错误关键字 java.lang.NumberFormatException 这句话明确告诉了我们是数字格式异常,接着后面有

  • java.lang.ArrayStoreException异常的解决方案

    java.lang.ArrayStoreException异常 异常提示 java.lang.ArrayStoreException: java.lang.Boolean at java.util.stream.Nodes$FixedNodeBuilder.accept(Nodes.java:1222) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.Spliter

  • 老生常谈java数组中的常见异常

    数组的定义 1:单个变量能存储信息 2:用来存储具有相同数据类型的数据集合,可以使用共同的名字来引用数组中存储的数据. 特点 数组可以存储任何类型的数据,包括原始数据类型和引用数据类型,但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据. 数组的使用 声明一个数组变量来存放该数组 java基础之数组中的常见异常,代码如下 package com.atguigu.java; /* * 数组中的常见异常: * 1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetio

  • 深入探讨JAVA中的异常与错误处理

    异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误: 它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务).

  • 实例解析如何正确使用Java数组

    一.关于数组的特点 1.在Java中,无论使用数组或集合,都有边界检查.如果越界操作就会得到一个RuntimeException异常. 2.数组只能保存特定类型.数组可以保存原生数据类型,集合则不能.集合不以具体的类型来处理对象,它们将所有对象都按Object类型处理,集合中存放的是对象的引用而不是对象本身. 3.集合类只能保存对象的引用.而数组既可以创建为直接保存原生数据类型,也可以保存对象的引用.在集合中可以使用包装类(Wrapper Class),如Integer.Double等来实现保存

  • JAVA中常见异常类

    1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了.数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,

随机推荐