java自定义异常需继承exception或runtimeexception,必须提供string message和string message+throwable cause两个构造方法,建议补充无参及仅throwable cause构造方法,继承选择决定是否强制处理。

Java 中自定义异常定义带参构造方法,核心是继承合适的父类(Exception 或 RuntimeException),并在子类中显式声明构造函数,再通过 super(...) 调用父类对应构造器。
必须提供的带参构造方法
至少要提供以下两个常用构造函数,否则调用时会受限:
-
String message 构造函数:用于传入可读性错误提示,如
new MyException("用户名不能为空")。
写法:public MyException(String message) { super(message); } -
String message 和 Throwable cause 构造函数:用于包装底层异常、构建异常链,保留原始堆栈信息。
写法:public MyException(String message, Throwable cause) { super(message, cause); }
建议补充的其他构造函数
提升实用性,通常一并提供:
-
无参构造函数:方便快速抛出默认语义异常,如
throw new MyException();
写法:public MyException() { super("发生未知业务异常"); }(也可调用super()) -
仅 Throwable cause 构造函数:当只想传递原始异常但不改写消息时使用
写法:public MyException(Throwable cause) { super(cause); }
继承选择影响使用方式
构造方法本身写法一致,但父类决定是否强制处理:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 继承 Exception → 编译期异常,方法内抛出必须
try-catch或throws声明 - 继承 RuntimeException → 运行时异常,无需强制处理,适合参数校验、业务规则违例等场景
实际使用示例
比如捕获 IOException 后包装为业务异常:
try {<br> String content = Files.readString(Paths.get("config.json"));<br>} catch (IOException e) {<br> throw new ConfigLoadException("配置文件加载失败", e); // 传 message + cause<br>}
这样上层看到的是清晰的业务提示,同时能通过 e.getCause() 或打印堆栈追溯到原始 IOException。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










