在 Java 中,异常是程序运行过程中出现的问题或错误的事件。Java 提供了异常处理机制,允许程序员捕获、处理并恢复或报告异常。异常处理的核心是使用 try-catch 语句块。

以下是一些关于 Java 异常处理的基本知识:

1. 抛出异常:

使用 throw 关键字可以在代码中手动抛出异常。通常,我们使用已有的异常类,如 IllegalArgumentException、NullPointerException 等,或者创建自定义异常类。
public class CustomExceptionExample {
    // 自定义异常类
    static class CustomException extends Exception {
        public CustomException(String message) {
            super(message);
        }
    }

    // 方法抛出自定义异常
    public static void validateAge(int age) throws CustomException {
        if (age < 0) {
            throw new CustomException("Age cannot be negative");
        }
    }

    public static void main(String[] args) {
        try {
            // 调用抛出异常的方法
            validateAge(-5);
        } catch (CustomException e) {
            System.out.println("Caught Exception: " + e.getMessage());
        }
    }
}

2. 捕获异常:

使用 try-catch 语句块可以捕获并处理异常。catch 语句用于指定要捕获的异常类型,并定义处理异常的代码块。
public class CatchExceptionExample {
    public static void main(String[] args) {
        try {
            // 可能会引发异常的代码
            int result = 10 / 0;
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            // 捕获并处理异常
            System.out.println("Caught ArithmeticException: " + e.getMessage());
        } finally {
            // finally 块中的代码始终会被执行,不论是否发生异常
            System.out.println("Finally block");
        }
    }
}

3. 多重捕获:

一个 try 块可以有多个 catch 块,用于处理不同类型的异常。
public class MultiCatchExample {
    public static void main(String[] args) {
        try {
            // 可能会引发异常的代码
            String str = null;
            System.out.println(str.length());
        } catch (NullPointerException e) {
            System.out.println("Caught NullPointerException: " + e.getMessage());
        } catch (ArithmeticException e) {
            System.out.println("Caught ArithmeticException: " + e.getMessage());
        } catch (Exception e) {
            // Exception 类型的 catch 块可以捕获所有异常
            System.out.println("Caught Exception: " + e.getMessage());
        }
    }
}

4. 自动关闭资源(try-with-resources):

Java 7 引入了自动关闭资源的功能,通过 try-with-resources 语句,可以自动关闭实现了 AutoCloseable 或 Closeable 接口的资源,如文件、网络连接等。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TryWithResourcesExample {
    public static void main(String[] args) {
        // 使用 try-with-resources 读取文件
        try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("Caught IOException: " + e.getMessage());
        }
    }
}

这些是关于 Java 异常处理的一些基本概念和示例。异常处理是 Java 编程中非常重要的一部分,它能够使程序更加健壮并更容易调试。


转载请注明出处:http://www.zyzy.cn/article/detail/422/Java