java - 为什么要在 Java 中编写自定义异常类

标签 java oop exception

编写自定义异常类的目的是什么,因为它所做的大部分是相同的。 例如,NullPointerException :

class NullPointerException extends RuntimeException {
      private static final long serialVersionUID = 5162710183389028792L;


      public NullPointerException() {
          super();
      }


      public NullPointerException(String s) {
          super(s);
      }
}

这是我见过和创建的大多数异常类的基本模板。

我能想到的一个目的是处理这些异常。但是这不能基于异常消息吗?。大多数情况下,我们为每种异常类型编写单一的处理代码。我知道这有“异常(exception)”。

但是还有更多吗?只是类名变了,这不是在重复自己吗?

还有 JDK Exception 类的代码比这个多吗?

最佳答案

我能想到几个原因:

  • 拥有多个异常类允许程序员在他们的 catch 子句中进行特定,并且只捕获他们关心的异常并知道如何处理。
  • 异常类可以携带有关导致异常的错误的信息。例如,ArrayIndexOutOfBoundsException携带有问题的数组索引,SQL 异常往往携带特定于数据库的错误代码和消息。
  • 异常规范——列出异常——可用于在编译时检查正确性。

关于java - 为什么要在 Java 中编写自定义异常类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493192/

相关文章:

node.js - @UsePipes(ValidationPipe) 不适用于泛型(抽象 Controller )

swift - 元素是否可以反向引用其通用容器? ( swift )

javascript - 如何为游戏对象使用抽象构造函数?

java - 如果执行器线程抛出错误怎么办?

java - 为什么我会收到 java.lang.NumberFormatException : For input string: "∞"?

java - 在字符串中查找姐妹括号

java - 在背景图像上设置动画

java - 如何有效地使用 InterruptedException

java - String.split() - 如何区分制表符分隔值和逗号分隔值?

java - Eclipse Mars 在 Java 8 Update 71 后无法启动