自定义异常在 Java 中的应用

发布:2024-09-12 12:06 阅读:12 点赞:0

自定义异常用于处理应用程序中的异常情况,使得开发者能够根据特定的条件抛出自定义的异常。通过创建自定义异常类,可以灵活地设定条件并生成符合要求的异常,提高了错误处理的精确度和代码的可维护性。

一. 自定义异常概述

自定义异常是一种开发者创建的异常,用于处理特定的异常情况。通过自定义异常类,可以定义和管理根据具体条件触发的异常,从而使得异常处理更加符合业务需求。

1. 创建自定义异常类

以下代码展示了如何创建一个自定义异常类 MyException,它继承了 Java 标准库中的 Exception 类,并且包含了一个整型字段 a 和一个重写的 toString() 方法:

import java.io.*;

// 自定义异常类
class MyException extends Exception {
    private int a; // 异常中存储的整型数据

    // 构造方法,接受一个整数作为参数
    MyException(int b) {
        a = b;
    }

    // 重写 toString 方法,用于提供自定义的异常信息
    public String toString() {
        return "MyException [" + a + "]";
    }
}

2. 使用自定义异常

下面的代码展示了如何使用自定义异常类 MyException 和 UserdefException 类来处理用户输入并触发异常:

class UserdefException {
    public int x; // 用户输入的数字
    final int k = 5// 预定义的数字,用于生成异常

    // 处理用户输入并生成异常
    void getInt() {
        try {
            BufferedReader dis = new BufferedReader(new InputStreamReader(System.in)); // 输入流读取器
            System.out.println("请尝试生成自定义异常");
            System.out.println("请输入一个 1 到 10 之间的数字");
            System.out.println("这个数字用于生成自定义异常");

            String line;
            while ((line = dis.readLine()) != null) {
                x = Integer.parseInt(line); // 将输入的字符串转换为整数
                if (x == 5) { // 如果输入的数字是 5
                    System.out.println("恭喜!! 你生成了一个异常!!");
                    throw new MyException(x); // 抛出自定义异常
                } else {
                    System.out.println("猜错了!! 请再试一次");
                }
            }
        } catch (MyException m) { // 捕获自定义异常
            System.out.println("生成的异常: " + m);
        } catch (NumberFormatException n) { // 捕获数字格式异常
            System.out.println("对不起 !! 不是有效的数字");
            System.out.println("正在退出....");
            System.out.println("生成的异常: " + n);
        } catch (IOException e) { // 捕获 I/O 异常
            e.printStackTrace();
        }
    }

    public static void main(String args[]) {
        UserdefException u = new UserdefException(); // 创建 UserdefException 实例
        u.getInt(); // 调用 getInt 方法
    }
}

输出

当用户输入数字 5 时,程序会生成自定义异常,并显示相应的信息。如果输入其他数字,程序会提示错误并要求重新输入。若输入非数字,则会抛出 NumberFormatException 异常并退出程序。

二. 系统异常简介

除了自定义异常外,Java 还提供了许多系统异常,用于处理常见的异常情况。以下是一些常见的系统异常及其用途:

1. 常见系统异常

  • ArrayIndexOutOfBoundsException: 数组索引无效时抛出。
  • CharConversionException: 在 ObjectStreamWriter 操作期间出现字符转换问题时抛出。
  • EOFException: 信号读取到文件末尾时抛出。
  • FileNotFoundException: 请求的文件未找到时抛出。
  • IOException: 一般 I/O 操作中的问题。
  • InterruptedIOException: 当 I/O 操作被中断时抛出。
  • InvalidClassException: 反序列化期间无法重新创建类时抛出。
  • NegativeArraySizeException: 数组大小为负数时抛出。
  • NumberFormatException: 字符串无法转换为数字时抛出。
  • SQLException: 数据库访问错误时抛出。
  • UnknownHostException: 无法定位主机时抛出。

三. 总结

自定义异常提供了一种灵活的方式来处理应用程序中的特定异常情况。通过创建自定义异常类,开发者可以根据特定的条件抛出异常,从而实现更加精确和有效的错误处理。理解和使用自定义异常,以及系统异常的处理,可以帮助开发者编写更健壮的代码,并提高应用程序的稳定性。