处理未检查异常的 Java 程序


在本文中,我们将学习如何在 Java 中处理未检查异常。

异常 是在程序实现过程中(即运行时)发生的意外情况,这些情况会中断程序的正常运行。

它可能由多种原因引起,例如用户提供的非法输入、设备故障、网络连接丢失、物理限制、代码错误、尝试打开不可用的文件等。

异常主要分为两大类  

  • 已检查异常

  • 未检查异常

在这里,我们将处理未检查异常。

未检查异常进一步包括以下内容:

  • Error 类异常 - OutOfMemoryError 异常、StackOverflow 异常等

  • 运行时异常类 - NullPointerException、IndexOutOfBoundsException 等。

我们将学习如何处理这里面两种最常见的异常类型。这些异常是NullPointerExceptionIndexOutOfBoundsException

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。

更新于: 2024 年 9 月 24 日

939 次查看

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告