是否可以在Java中创建我自己的未经检查的异常?
基本上,我想
MyUncheckedException
throws
答案 0 :(得分:34)
是。从RuntimeException
延长MyUncheckedException
。但是,以下是documentation
一般来说,不要抛出RuntimeException或创建一个 RuntimeException的子类只是因为你不想成为 指定您的方法可以抛出的例外情况。
这是底线指南:如果客户可以合理地 期望从异常中恢复,使其成为检查异常。如果 客户端无法做任何事情从异常中恢复,使其成为一个 未经检查的例外。
答案 1 :(得分:5)
是 - 从RuntimeException
确保以正确的理由执行此操作:通常,运行时异常指示编程错误,而不是程序可能以某种有意义的方式做出反应的错误。
答案 2 :(得分:2)
我认为你只是想要继承RuntimeException?
答案 3 :(得分:0)
YES。根据Effective Java -
虽然Java语言规范不需要它,但是有一个强大的 保留错误以供JVM使用以指示资源缺陷,不变故障或其他无法继续执行的条件的约定。鉴于几乎普遍接受这种约定,最好不要实现任何新的Error子类。因此,您实现的所有未经检查的throwable应该是RuntimeException的子类(直接或间接)。
建议使用未经检查的异常: -
关于记录未经检查的异常 -
使用Javadoc @throws标记记录每个未经检查的异常 方法可以抛出,但不要使用throws关键字来包含未选中 方法声明中的例外。
答案 4 :(得分:0)
为防万一,我将在此处举例:
public class MyCustomException extends RuntimeException {
public MyCustomException(String message) {
super(message);
}
}