首页 > 编程语言 >java异常中if (!isPositionIndex(index)) throw new IndexOutOfBoundsException(outOfBoundsMsg(index));

java异常中if (!isPositionIndex(index)) throw new IndexOutOfBoundsException(outOfBoundsMsg(index));

时间:2022-11-04 20:00:52浏览次数:43  
标签:index java list throw new outOfBoundsMsg IndexOutOfBoundsException size


public boolean addAll(int index, Collection<? extends E> c) {
checkPositionIndex(index);
}

private String outOfBoundsMsg(int index) {
return "Index: "+index+", Size: "+size;
}

private void checkElementIndex(int index) {
if (!isElementIndex(index))
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

private void checkPositionIndex(int index) {
if (!isPositionIndex(index))
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

上述源码出自LinkedList.class.
对于if语句后直接抛出异常看上去还是一脸懵的.

这样写就是可以直接抛出异常信息,根据自己定义的情况来抛出从而终止后面程序的运行.

测试代码:

List list = new LinkedList();
list.add(2);
list.add(12);
System.out.println(list.size());
if (list.size() < 0) {
throw new IndexOutOfBoundsException("size()<0");
} else {
throw new IndexOutOfBoundsException("size()>0");
}

结果:
​​​1​​​​2​​​​Exception in thread "main" java.lang.IndexOutOfBoundsException: size()>0 at cn.com.clearlight.test.CollectionsDemo.main(CollectionsDemo.java:28)​​ 如果再往下面if-else语句后面写代码的话将出现错误信息:Unreachable code

这样就容易理解源码中的这种写法了.


标签:index,java,list,throw,new,outOfBoundsMsg,IndexOutOfBoundsException,size
From: https://blog.51cto.com/u_14233037/5824732

相关文章

  • JavaScript中的Pipe
    JavaScript中的Pipe本文会介绍Pipe在函数式编程中的基本概念,怎么用Pipe让我们的代码变得更美好,以及新的pipe操作符,Fancy的东西在后面!什么是Pipe?先用一个最简单的例子来看......
  • 深入java虚拟机(四)
    packagecom.ygl;classCL{//静态代码块可以简单理解为初始化一些值static{System.out.println("ClassCL");}}publicclassTest7{publicstaticvoidmain(String[......
  • 如何输出字符串中的增补字符?-java
    关于增补字符以及代码点和代码单元的介绍,请看:​​代码点和代码单元的理解-Java​​对于char类型,因为该类型只能容纳一个内存单元,所以它无法存取辅助字符.以及当用它来读......
  • 深入java虚拟机(二)
    加载:从class文件将二进制数据加载至内存生成Class对象.(实现由class文件从硬盘到内存迁移,注意此时还没有任何对象生成也即不存在实例变量)连接:为静态变量分配内存,初始化默认值......
  • 深入java虚拟机(一)
    packagecom.ygl;classSingleTon{privatestaticSingleTonsingleTon=newSingleTon();publicstaticintcounter1;publicstaticintcounter2=0;publicSingleTon(){......
  • javascript - 练习题:自定义typeof / 数组去重
    自定义typeof函数为啥要自定义typeof,因为 引用值 会被typeof 输出为object。 换句话说:typeof 不能区分 引用值(数组、对象和包装类)的具体类型;typeof 本身是可......
  • JavaSE—常量和变量
    常量和变量是Java程序设计的基础,用于表示存储数据。一、标识符 Java中的标识符必须以字母、下划线(_)或美元符($)开头,后面可以跟字母、数字、下划线或美元符在定义标识......
  • JavaSE—第一章练习题
    【答案】1、B   2、B     3、B   4、B    5、B    6、JavaSE;JavaEE;JavaME  7、简单性、面向对象、分布性、编译和解释性、......
  • Tomcat启动startup.bat一闪而过 - JavaWeb
    emm,首先呢,先看你的环境变量,是否​​JAVA_HOME​​这一项.后面的路径是主目录如果有这个,你的startup.bat还是一闪而过的话,那么我感觉就不是你机器的问题了,这就应......
  • Java中>>与>>>的区别
    移位时,首先搞清楚正数的原码、补码,负数的原码、补码以及在计算机中正数的二进制表示为原码还是补码?可先看这篇:​​原码,反码,补码的理解-Java​​>>与>>>都属于位运......