我正在构建一个有很多计算的科学软件,当然,论点的长度也不错,所以我使用了 IllegalArgumentException 该课程似乎是该问题的正确名称,但是我应该把 throws IllegalArgumentException 在功能定义上?

我之所以问这个,是因为我写了它,Eclipse编辑并没有要求我尝试捕捉。我认为这就是如何强制执行捕获的方式。我已经在Java.com上阅读了例外处理教程,但我不确定是否正确理解有关我的问题的部分。

有帮助吗?

解决方案

RuntimeException喜欢 IllegalArgumentException 用于指示 编程错误. 。该程序本身应该很少能够处理它。有人需要手动修复代码。

潜在的 RuntimeException应在功能合同(即Javadoc)中以某种方式进行记录 @throws, ,或者在描述输入时。如果您没有该功能的Javadoc,则可能需要添加throws子句,以记录使用该函数的潜在陷阱,但通常会添加tharts Thart Thart Thart Thart for Runtime Exceptions。

如果给出错误的长度实际上不是编程错误,而是一个例外情况,则我会创建一个新的检查例外(例如BadLengtherRorror)。如果不是特殊情况,请不要使用异常进行流控制。

其他提示

有两种类型的例外:

运行时异常(例如firegalargumentException和nullpoInterException)无需明确捕获,因为它们“不应该发生”。当然,当他们这样做时,您需要在某个地方处理它们。

需要捕获或宣布定期例外,因为它们代表了一种更本质上困难的错误。

您需要阅读未选中的异常 - 从RuntimeException继承的异常。它们不需要在方法标题中声明。

http://download.oracle.com/javase/tutorial/essential/exceptions/runtime.html

最后一段总结了:

如果可以合理地期望客户从例外恢复,请将其作为检查例外。如果客户无法做任何事情以从异常中恢复,请使其成为未选中的异常。

IllegalArgumentException (例如 NullPointerException)是一个例子 RuntimeException. 。这种类型的例外不是所谓的 检查例外. 。 Java要求方法声明他们投掷哪些检查异常,并且如果一种调用方法可能会抛出检查的异常,则调用方法应声明其抛出异常本身,或捕获并处理它。

因此,我的具体建议是否定的,不要声明。当然,但是,您不想抓住它。在大多数情况下,您也不想扔它 除非 这是 意外 行为。如果该方法获得不喜欢的值是非常正常和合理的,那么处理它的方法是错误的。

您可能还需要考虑利用断言。

理解例外的第一点是它们是针对特殊情况的。在考虑您的方法时,您必须问:“如果传递特殊值,该方法是否应该引发异常?”如果答案是“是”,请将其放入您的方法声明中。我不知道您是否明白了,但这很简单。这只是实践问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top