java - Java 中的异常规范有什么好处?

标签 java c++ exception specifications

我是从 C++ 来到 Java 的。 在 Java 和 C++ 中,我们都有可能指定异常。它看起来像这样:

void function_name() throw(Exception)
{
  ...
  if (error) 
  {
    throw Exception("Error");
  }
  ...
}

据我所知,在 C++ 中编写异常规范被认为是一种不好的做法。与 C++ 不同,在 Java 中我们必须这样做。所以,我的问题是:

用 Java 编写异常规范有什么好处?

最佳答案

您必须在方法签名中仅指定已检查的异常(Exception 类的子类)。不需要指定未经检查的异常(RuntimeException 类的子类)。

在方法签名中指定异常是语言语义定义的固有 Java 实践。但也有很多关于它的争议。一些团队和项目甚至认为这是一种不好的做法,只使用未经检查的异常。

通常,作为一种好的做法,当您将检查异常定义为方法契约的一部分时,您应该抛出检查异常,即方法调用者必须知道某些特定的(很可能且可恢复的)错误类型,并且要么捕获并处理它,或将其向上传递到调用堆栈。未经检查的异常通常表示方法代码中存在一些内部错误,因此不需要捕获。

关于java - Java 中的异常规范有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582004/

相关文章:

Delphi 通用异常捕获

java - 在 Java 中比较整数

java - 无法在 Java 中运行多个 SQL 更新语句

c++ - 使用 Mersenne twister 的一维噪声在不同的设备上给出不同的结果

c++ - 迭代器指向哪个索引

c++ - 如何在 Qt 中捕获异常?

java - 为什么Android中有这么多内部类?

java - 通配符子域的单独 IP 地址

c++ - 为什么通过 int& 捕获 const int& 有效?

php - 捕获异常时遇到问题