Java 异常处理 - 自定义异常

在Java中,自定义异常是一种创建新异常类的方式,这些异常类继承自Throwable类或其子类Exception(或RuntimeException,如果它是运行时异常的话)。自定义异常通常用于描述特定于应用程序的错误情况,以便为调用者提供更具体、更有意义的错误信息。

下面是一个简单的步骤来创建一个自定义异常:

  1. 定义自定义异常类 :首先,你需要定义一个类,它继承自Exception(或RuntimeException)。在这个类中,你可以添加任何你需要的字段和方法,但通常至少会包含一个构造函数来初始化异常信息。
java 复制代码
public class MyCustomException extends Exception {
    // 可以添加自定义字段
    private String customMessage;

    // 构造函数,接受一个字符串作为错误消息
    public MyCustomException(String message) {
        super(message); // 调用父类(Exception)的构造函数
        this.customMessage = message; // 也可以将消息存储在自定义字段中(如果需要)
    }

    // 如果需要,可以添加其他构造函数和方法

    // 示例:一个获取自定义消息的方法
    public String getCustomMessage() {
        return customMessage;
    }
}
  1. 在代码中抛出自定义异常 :在你的应用程序代码中,当遇到需要抛出自定义异常的情况时,你可以使用throw关键字来抛出它。
java 复制代码
public void someMethod() throws MyCustomException {
    // 一些代码...

    if (/* 某种错误条件 */) {
        throw new MyCustomException("发生了一个自定义异常");
    }

    // 其他代码...
}

注意,如果方法抛出了自定义异常(或任何其他检查型异常),那么它必须在方法签名中使用throws关键字声明这个异常,或者在方法内部捕获并处理它。

  1. 捕获并处理自定义异常 :在调用可能抛出自定义异常的方法时,你需要使用try-catch块来捕获并处理这个异常。
java 复制代码
try {
    someMethod(); // 调用可能抛出MyCustomException的方法
} catch (MyCustomException e) {
    // 处理MyCustomException的逻辑
    System.err.println("捕获到自定义异常: " + e.getMessage());
    // 也可以调用自定义方法,如e.getCustomMessage()
}

在这个例子中,catch块捕获了MyCustomException类型的异常,并打印了异常的消息。你还可以根据需要在catch块中添加更多的逻辑来处理这个异常。

相关推荐
统计学小王子4 小时前
数学建模国赛倒计时 2 天 ——《统计模型精讲(广义线性模型 R 语言实例 + 分析)》
开发语言·数学建模·r语言
用户3126874877204 小时前
线程池到底怎么管理线程的?从 ThreadPoolExecutor 到拒绝策略全链路拆解
java
此冬歌咏5 小时前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化
cpolar技术支持5 小时前
Kafka Streams 窗口统计怎么验收:本地跑订单流聚合,用 cpolar 给同事看只读结果页
java·docker·kafka·cpolar·kafka streams
爱读源码的大都督5 小时前
DeepSeek面试官问:生产RAG系统回答不准确,该如何定位和优化?这样回答,能让面试官当场给你Offer!
java·后端·python
Cx330❀5 小时前
【Linux网络】深入TCP协议:从滑动窗口到拥塞控制与性能优化全景解析
linux·开发语言·网络·tcp/ip·ai·性能优化·ai编程
“AI国潮设计-小江”5 小时前
【Python实战】SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
k4m7v2pz5 小时前
从 Python 搬到 Rust:pyglet MIDI DAW 变成 egui 鬼畜采样器的迁移复盘
开发语言·python·rust
C++ 老炮儿的技术栈5 小时前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
杨运交5 小时前
[069][公共模块]Spring Boot 全局异常处理与参数校验实战(下):校验异常精细化处理与 WebFlux 适配
java·spring boot·后端