我从C++来到爪哇。在Java和C++中,我们都有可能指定异常。看起来是这样的:
void function_name() throw(Exception)
{
...
if (error)
{
throw Exception("Error");
}
...
}如我所知,编写异常规范在C++中被认为是一种糟糕的实践。与C++不同,在Java中我们必须这样做。所以,我的问题是:
用Java编写异常规范有什么好处?
发布于 2015-06-01 19:59:35
您必须在方法签名中只指定选中的异常( Exception类的子类)。不需要指定未检查的异常( RuntimeException类的子类)。
在方法签名中指定异常是语言语义定义的固有Java实践。但在这方面也有很多争议。一些团队和项目甚至认为这是一种糟糕的实践,只使用未经检查的异常。
通常,作为一种良好的实践,当您将检查异常定义为方法契约的一部分时,应该抛出一个检查异常,即方法调用者必须知道某些特定的(非常可能的和可恢复的)错误类型,或者捕获并处理它,或者传递调用堆栈。未经检查的异常通常意味着方法代码中的一些内部错误,因此不需要捕获。
发布于 2015-06-01 20:01:22
Java没有利润,例外规范是强制性的。Java的设计有一个比C++更强大的类型系统。在C++中,异常规范是可选的,Java认为异常是程序设计的一个重要部分,因此他们决定在函数抛出时强制执行异常规范。这有时是有争议的,但却是语言设计的选择。例外是呼叫契约的一部分。
https://stackoverflow.com/questions/30582004
复制相似问题