是否可以在Java中创建我自己的未经检查的Exception?

时间:2012-02-21 03:23:39

标签: java error-handling

是否可以在Java中创建我自己的未经检查的异常?

基本上,我想

  • 拥有自己的异常类MyUncheckedException
  • 这不会让我更新调用抛出此异常的方法的所有方法,并使用大量的throws

5 个答案:

答案 0 :(得分:34)

是。从RuntimeException延长MyUncheckedException。但是,以下是documentation

中的指南
  

一般来说,不要抛出RuntimeException或创建一个   RuntimeException的子类只是因为你不想成为   指定您的方法可以抛出的例外情况。

     

这是底线指南:如果客户可以合理地   期望从异常中恢复,使其成为检查异常。如果   客户端无法做任何事情从异常中恢复,使其成为一个   未经检查的例外。

答案 1 :(得分:5)

是 - 从RuntimeException

派生

确保以正确的理由执行此操作:通常,运行时异常指示编程错误,而不是程序可能以某种有意义的方式做出反应的错误。

答案 2 :(得分:2)

我认为你只是想要继承RuntimeException?

答案 3 :(得分:0)

YES。根据Effective Java -

  

虽然Java语言规范不需要它,但是有一个强大的   保留错误以供JVM使用以指示资源缺陷,不变故障或其他无法继续执行的条件的约定。鉴于几乎普遍接受这种约定,最好不要实现任何新的Error子类。因此,您实现的所有未经检查的throwable应该是RuntimeException的子类(直接或间接)。

建议使用未经检查的异常: -

  1. 使用运行时异常来指示编程错误。
  2. 如果您认为某个条件可能允许恢复,请使用已检查的例外;如果不是,请使用运行时异常。如果不清楚是否可以进行恢复,那么使用未经检查的异常可能会更好。
  3. 关于记录未经检查的异常 -

      

    使用Javadoc @throws标记记录每个未经检查的异常   方法可以抛出,但不要使用throws关键字来包含未选中   方法声明中的例外。

答案 4 :(得分:0)

为防万一,我将在此处举例:

public class MyCustomException extends RuntimeException {

    public MyCustomException(String message) {
        super(message);
    }

}