我应该在函数中抛出IllegalArgumentException吗?

我正在构建一个有很多计算的科学软件,当然参数可能有不正确的长度......所以我使用了
IllegalArgumentException
类,因为它似乎是问题的正确名称,但是我应该把
throws IllegalArgumentException
放在函数定义中吗? 我问这个是因为在我写完之后,Eclipse编辑器没有让我用try和catch来包围这个函数。我认为这是如何实施尝试和捕获。我已经阅读了Java.com上的异常处理教程,但我不确定我是否理解了关于我的问题的部分。     
已邀请:
RuntimeException
s像
IllegalArgumentException
用于表示编程错误。程序本身应该很少能够处理它。有人需要手动修复代码。 应该在函数契约(即javadoc)中以某种方式记录潜在的
RuntimeException
s,或者使用显式
@throws
,或者在描述输入时记录。如果你没有函数的javadoc,你可能想要添加throws子句只是为了记录使用该函数的潜在缺陷,但通常不鼓励为运行时异常添加throws子句。 如果给出错误的长度实际上不是编程错误,但是异常情况,我会创建一个新的已检查异常(例如BadLengthError)。如果不是特殊情况,请不要使用异常进行流量控制。     
有两种类型的例外: 运行时异常(例如IllegalArgumentException和NullPointerException)不需要显式捕获,因为它们“不应该发生”。当他们这样做时,你需要在某个地方处理它们。 常规异常需要被捕获或声明被抛出,因为它们代表了一种更本质上更难的错误。     
您需要阅读Unchecked Exceptions - 从RuntimeException继承的异常。它们不需要在方法头中声明。 http://download.oracle.com/javase/tutorial/essential/exceptions/runtime.html 最后一段总结如下:   如果可以合理地预期客户   从异常中恢复,成功   检查的例外。如果是客户   无法从中恢复过来   例外,让它不受控制   例外。     
IllegalArgumentException
(以及其他一些,例如
NullPointerException
)是
RuntimeException
的例子。这种类型的异常不是所谓的已检查异常。 Java要求方法声明它们抛出哪些已检查的异常,并且如果被调用的方法可能抛出一个已检查的异常,则调用方法应该声明它自己抛出异常,或者捕获并处理它。 因此,我的具体建议是否定,不要声明。当然,你可能不想抓住它。在大多数情况下,除非这是意外行为,否则您也不想抛弃它。如果方法获得它不喜欢的值是非常正常和合理的,则异常是处理它的错误方法。 您可能还想考虑使用断言。     
理解异常时的第一点是它们适用于特殊情况。在考虑你的方法时,你必须问:“如果传递一个特殊值,这个方法是否会引发异常?”如果答案为“是”,请将其放在方法声明中。  我不知道你是否明白了,但这很简单。这只是一个练习问题。     

要回复问题请先登录注册