我应该把非法争论异常放在函数中吗?

2022-09-02 20:39:13

我正在构建一个具有大量计算的科学软件,当然参数可能会有错误的长度等......所以我使用了class,因为它似乎是正确的问题名称,但是我应该把放在函数定义上吗?IllegalArgumentExceptionthrows IllegalArgumentException

我之所以问这个问题,是因为在我写完它之后,Eclipse 编辑器没有要求我用 try and catch 来包围函数。我以为这就是尝试和捕捉是如何执行的。我已经阅读了 Java.com 异常处理教程,但我不确定我是否理解了有关我的问题的部分。


答案 1

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

潜在的 s 应该以某种方式记录在函数合约(即 javadoc)中,要么使用显式 ,要么在描述输入时记录。如果您没有该函数的 javadoc,则可能希望添加 throws 子句只是为了记录使用该函数的潜在陷阱,但通常不鼓励为运行时异常添加 throws 子句。RuntimeException@throws

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


答案 2

有两种类型的例外:

运行时异常(例如 IllegalArgumentException 和 NullPointerException)不需要显式捕获,因为它们“不应该发生”。当然,当他们这样做时,你需要在某个地方处理它们。

需要捕获或声明要引发常规异常,因为它们表示一种本质上更困难的错误。


推荐