在 java 中定义 mqexception 需要继承 java.lang.exception,并保留标准构造函数以支持堆栈追踪。通常建议同时提供无参、带消息和带原因的构造方法,以便在抛出异常时准确传递错误上下文。

MQException 的继承关系是怎样的
它直接继承自 Exception,属于受检异常(Checked Exception),强制调用者处理。这种设计确保业务代码必须显式捕获或声明抛出该异常,防止消息队列通信失败被静默忽略。

public class MQException extends Exception {
private static final long serialVersionUID = 1L;
public MQException() {
super();
}
public MQException(String message) {
super(message);
}
public MQException(String message, Throwable cause) {
super(message, cause);
}
}
如何在业务逻辑中抛出并使用 MQException
在发送或接收消息的方法中,当检测到连接断开或消息格式错误时,应实例化 MQException 并抛出。调用方通过 try-catch 块捕获该异常,并根据异常消息执行重试或记录日志操作。
立即学习“Java免费学习笔记(深入)”;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class MQService {
private BlockingQueue<String> queue = new LinkedBlockingQueue<>();
public void sendMessage(String msg) throws MQException {
if (msg == null || msg.isEmpty()) {
throw new MQException("Message cannot be empty");
}
try {
queue.put(msg);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new MQException("Send interrupted", e);
}
}
public static void main(String[] args) {
MQService service = new MQService();
try {
service.sendMessage("");
} catch (MQException e) {
System.out.println("Caught: " + e.getMessage());
}
}
}
如果传入空字符串作为消息内容会触发什么结果
当传入空字符串时,sendMessage 方法中的条件判断 msg.isEmpty() 为真,直接抛出带有消息 "Message cannot be empty" 的 MQException。主程序捕获该异常后打印出具体错误信息,不会进入队列存储流程。


















