处理未检查异常的 Java 程序
在本文中,我们将学习如何在 Java 中处理未检查异常。
异常 是在程序实现过程中(即运行时)发生的意外情况,这些情况会中断程序的正常运行。
它可能由多种原因引起,例如用户提供的非法输入、设备故障、网络连接丢失、物理限制、代码错误、尝试打开不可用的文件等。
异常主要分为两大类 −
-
已检查异常
-
未检查异常
在这里,我们将处理未检查异常。
未检查异常进一步包括以下内容:
-
Error 类异常 - OutOfMemoryError 异常、StackOverflow 异常等
-
运行时异常类 - NullPointerException、IndexOutOfBoundsException 等。
我们将学习如何处理这里面两种最常见的异常类型。这些异常是NullPointerException 和IndexOutOfBoundsException。
IndexOutOfBoundsException
当程序员试图检索索引大于或等于数组长度(因为数组的索引从 0 开始)的元素时,就会出现此异常。由于遇到此异常,程序会自动终止。
示例 1
import java.io.*; public class ExceptionExample1 { public static void main(String[] args){ //creation of an array of length 6 int arr[] = { 40, 32, 33, 14, 56, 90 }; // Trying to retrieve an element greater than // index size of the array System.out.println(arr[10]); } }
输出
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 6 at ExceptionExample1.main(ExceptionExample1.java:8)
示例 2
当用户尝试检索等于数组索引大小的数组元素时。
import java.io.*; public class ExceptionExample1 { public static void main(String[] args){ //creation of an array of length 6 int arr[] = { 40, 32, 33, 14, 56, 90 }; // Trying to retrieve an element equal to the // index size of the array System.out.println(arr[6]); } }
输出
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6 at ExceptionExample1.main(ExceptionExample1.java:8)
处理 ArrayIndexOutOfBoundsException
此异常可以通过try-catch语句处理。
try 语句使程序员能够定义一段代码块以测试是否存在可能的错误,而 catch 块捕获给定的异常对象并执行所需的运算。因此,程序将成功执行,而不会像上述情况那样意外停止。
示例
import java.io.*; public class ExceptionExample1 { public static void main(String[] args) { // Filling the array with 6 array elements int arr[] = { 40, 32, 33, 14, 56, 90 }; // Try block for exceptions try { // trying to retrieve and print the // element that is out of the scope of indexes of this array System.out.println(arr[10]); } // Catch block to catch the exceptions catch (ArrayIndexOutOfBoundsException e) { // displaying message when index which is not // present in an array is being accessed System.out.println( "Array Out of index please rectify your code"); } } }
输出
Array Out of index please rectify your code
NullPointerException
当试图检索具有空值的 object 引用时,会遇到此异常。
示例
import java.io.*; public class ExceptionExample2 { public static void main(String[] args) { // Instance of string str has a null value String str = null; // Comparison of the null value with the other string // throws an exception and prints the same System.out.println(str.equals("Hello")); } }
输出
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "" is null at ExceptionExample2.main(ExceptionExample2.java:8)
处理 NullPointerException
此异常也可以通过try-catch语句处理。
示例
import java.io.*; public class ExceptionExample2 { public static void main(String[] args) { // Assigning NULL value to a string String str = null; try { // Trying to compare the null value with another string // and throw an exception if (str.equals("Hello")) { // print the following string if it is true System.out.println("TRUE"); } } catch (NullPointerException e) { // dealing with the exception System.out.println("Object Reference can't be null"); } } }
输出
Object Reference can't be null
在本教程中,我们讨论了处理未检查异常的 Java 程序 - NullPointerException 和 IndexOutOfBoundsException。
广告