📜  java 异常处理 - Java (1)

📅  最后修改于: 2023-12-03 15:16:00.419000             🧑  作者: Mango

Java 异常处理

在 Java 中,异常(Exception)是指程序运行发生了不正常的情况,例如数组越界、除数为零等。Java 中的异常处理机制允许我们捕捉这些异常,并进行相应的处理,可以让我们的程序更加健壮和可靠。

异常分类

Java 中的异常分为两种:

  1. 可检查异常(checked exception)
  2. 运行时异常(unchecked exception)

可检查异常通常代表程序可能无法处理的外部情况,例如文件无法打开、网络连接中断等,需要在编译时显式地处理这些异常。运行时异常则是由程序逻辑错误造成的,例如数组越界、空指针等,一般不需要显式处理。

异常处理机制

在 Java 中,异常是以面向对象的方式进行处理的。当出现异常时,会创建一个异常对象,这个对象包含了异常的类型、异常信息、异常发生的位置等相关信息。接着这个异常对象会在方法之间传递,直到被捕捉或抛出。

Java 中使用 try-catchthrow 语句来处理异常。try-catch 语句用于捕捉异常,throw 语句用于抛出异常。

try-catch 语句

try-catch 语句的语法格式如下:

try {
    // 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {
    // 处理 ExceptionType1 类型的异常
} catch (ExceptionType2 e2) {
    // 处理 ExceptionType2 类型的异常
} finally {
    // 无论是否发生异常,都会执行的代码块
}

try 代码块中的代码可能会抛出异常。如果出现了异常,代码执行会跳转到 catch 代码块中,根据异常类型选择合适的处理方式。如果没有发生异常,会直接跳过 catch 代码块,执行 finally 代码块中的代码。

finally 代码块中的代码无论是否发生异常都会被执行。

throw 语句

throw 语句用于抛出一个异常,语法格式如下:

throw new ExceptionType("Exception message");

throw 语句会抛出一个异常对象,这个对象包含了异常的类型和异常信息等相关信息。在 try-catch 语句中可以捕获这个异常,并根据异常类型进行相应的处理。

示例代码

以下是一个简单的示例代码,演示了如何使用 try-catchthrow 语句捕获和处理异常。

public class ExceptionDemo {
    public static void main(String[] args) {
        try {
            int[] arr = new int[5];
            arr[10] = 1; // 此处会抛出 ArrayIndexOutOfBoundsException 异常
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组越界异常:" + e.getMessage());
        } finally {
            System.out.println("finally 代码块被执行");
        }

        try {
            int a = 1 / 0; // 此处会抛出 ArithmeticException 异常
        } catch (ArithmeticException e) {
            System.out.println("算术异常:" + e.getMessage());
        }
        
        try {
            throw new MyException("自定义异常");
        } catch (MyException e) {
            System.out.println("自定义异常:" + e.getMessage());
        }
    }
}

class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

以上代码演示了如何分别捕获数组越界异常、算术异常和自定义异常。在 try-catch 语句中,可以根据异常类型选择合适的处理方式。在 finally 代码块中的代码无论是否发生异常都会被执行。

总结

Java 异常处理机制允许我们捕捉和处理程序运行过程中发生的异常,从而让我们的程序更加健壮和可靠。在编写代码时,需要考虑到可能出现的异常情况,并通过 try-catchthrow 语句进行处理。