📜  JavaStringIndexOutOfBoundsException 和 ArrayIndexOutOfBoundsException 的区别

📅  最后修改于: 2021-09-12 11:34:42             🧑  作者: Mango

扰乱程序正常流程的无例外的、不需要的事件称为 Exception

大多数时候异常是由我们的程序引起的,这些都是可以恢复的。示例:如果我们的程序要求是从位于美国的远程文件中读取数据 在运行时,如果远程文件不可用,那么我们将得到 RuntimeException 说 fileNotFoundException。如果发生fileNotFoundException,我们可以将本地文件提供给程序以正常读取并继续程序的其余部分。

Java的异常主要有以下两种

1.检查异常:

为使程序在运行时顺利执行而由编译器检查的异常称为检查异常。在我们的程序中,如果有可能出现受检异常,那么我们应该处理该受检异常(通过 try-catch 或 throws 关键字),否则我们将得到编译时错误;

检查异常的例子是 ClassNotFoundException 、 IOException 、 SQLException 等等。

2. 未经检查的异常:

未经编译器检查的异常,无论程序员是否处理此类异常,都称为未检查异常。

未检查异常的示例是ArithmeticException、ArrayStoreException等。

ArrayIndexOutOfBoundException : ArrayIndexOutOfBoundException 是 RuntimeException 的子类,因此它是一个未经检查的异常。每当我们使用负值或大于或等于给定数组长度的值作为数组的索引时,JVM 会自动引发此异常,我们将收到此异常。

示例

Java
// Java program to demonstrate the
// ArrayIndexOutOfBoundException
 
// import the required package
import java.io.*;
import java.lang.*;
import java.util.*;
 
// driver class
class GFG {
 
    // main method
    public static void main(String[] args)
    {
 
        // declaring and initializing an array of length 4
        int[] x = { 1, 2, 3, 4 };
 
        // accessing the element at 0 index
        System.out.println(x[0]);
 
        // accessing an index which is greater than the
        // length of array
        System.out.println(x[10]);
 
        // accessing a negative index
        System.out.println(x[-1]);
    }
}


Java
// Java program to demonstrate
// StringIndexOutOfBoundException
 
// imort required packages
import java.io.*;
import java.util.*;
 
// driver class
class GFG {
 
    // main class
    public static void main(String[] args)
    {
 
        // declaring a string
        String s = "GEEKSFORGEEKS";
 
        // accessing the second character of the given
        // string using charAt() method
        System.out.println(s.charAt(1));
 
        // now using an index greater than the length of the
        // string
        System.out.println(s.charAt(30));
    }
}


输出:

StringIndexOutOfBoundException: StringIndexOutOfBoundException 是 RuntimeException 的子类,因此它是一个未经检查的异常。每当我们在任何字符串类方法中使用负数或大于或等于给定字符串长度的索引值时,JVM 都会自动引发此异常。

例子:

Java

// Java program to demonstrate
// StringIndexOutOfBoundException
 
// imort required packages
import java.io.*;
import java.util.*;
 
// driver class
class GFG {
 
    // main class
    public static void main(String[] args)
    {
 
        // declaring a string
        String s = "GEEKSFORGEEKS";
 
        // accessing the second character of the given
        // string using charAt() method
        System.out.println(s.charAt(1));
 
        // now using an index greater than the length of the
        // string
        System.out.println(s.charAt(30));
    }
}

输出:

                ArrayIndexOutOfBoundException                      StringIndexOutOfoundExcetion
It is thrown to indicate that an array has been accessed with an illegal index(i.e index value is either negative or greater than or equal to the length of an array). It is thrown by the method of string class to indicate that an index value used in the string method is either negative or greater than or equal to the length of the given string.