在java中创建自定义异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中创建自定义异常相关的知识,希望对你有一定的参考价值。

在一次采访中,我最近被问到以下问题:

有没有其他方法创建自定义Exception而不使用extends

  1. 扩展Exception类或Exception子类用于检查异常
  2. 扩展RuntimeExceptionRuntimeException子类用于未经检查的例外。

给出的可能答案是什么?

答案

如果不使用扩展异常类,就无法做到这一点。但是你可以在没有明确扩展的情况下实现它。

public class Test {
    public void method() {
        throw new RuntimeException() {};
    }
}

上面声明并抛出了RuntimeException的匿名子类。

当然,这是毫无意义的事情。由于该类是匿名的,因此您无法在throws子句中对其进行命名,也不能在异常处理程序中按名称处理它。

另见:Throw anonymous exceptions in Java


或者,您可以扩展ErrorError的子类或.... Throwable。但你不应该。

  • 通常假设Error异常由JVM或标准库1定义和抛出。因此,Error层次结构中的自定义子类(至少可以说)令人惊讶。
  • 如果你直接扩展Throwable,那么你应该承担断代码,假设ExceptionErrorThrowable的唯一子类。

1 - 这不是javadoc所说的......但是人们认为是这样的。

另一答案

可以扩展Throwable类。

另一答案

因为OP专门要求不使用extends(我认为你不能扩展像Throwable这样的类)你可以使用Exception和参数如:

throw new Exception("this is my custom exception");

现在无论你在哪里捕获此异常,都可以查看消息

if(e.getMessage().equals("this is my custom exception")){
  //TODO code here
}

现在我会解雇那些会编写代码的人,但是为了采访的缘故哦...

另一答案

您可以扩展Throwable但不建议这样做。

另一答案

那么你可以导入一个异常而不是扩展它。只需导入包并在自定义异常中使用它。

以上是关于在java中创建自定义异常的主要内容,如果未能解决你的问题,请参考以下文章

在java中创建自定义异常

如何在 Java 中创建自定义迭代器?

在 Java 中创建自定义 JButton

使用 JButton 在 Java 中创建自定义按钮

如何在 TypeScript 中创建自定义类型

如何在 Java 中创建自定义 GUI 组件? (需要开始提示)