首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的异常规范有什么好处?

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

Stack Overflow用户
提问于 2015-06-01 19:48:47
回答 2查看 1K关注 0票数 5

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

代码语言:javascript
复制
void function_name() throw(Exception)
{
  ...
  if (error) 
  {
    throw Exception("Error");
  }
  ...
}

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-01 19:59:35

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

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

通常,作为一种良好的实践,当您将检查异常定义为方法契约的一部分时,应该抛出一个检查异常,即方法调用者必须知道某些特定的(非常可能的和可恢复的)错误类型,或者捕获并处理它,或者传递调用堆栈。未经检查的异常通常意味着方法代码中的一些内部错误,因此不需要捕获。

票数 5
EN

Stack Overflow用户

发布于 2015-06-01 20:01:22

Java没有利润,例外规范是强制性的。Java的设计有一个比C++更强大的类型系统。在C++中,异常规范是可选的,Java认为异常是程序设计的一个重要部分,因此他们决定在函数抛出时强制执行异常规范。这有时是有争议的,但却是语言设计的选择。例外是呼叫契约的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30582004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档