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

标签 java exception-handling throws

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

我问这个是因为在我编写它之后,Eclipse 编辑器没有要求我用 try 和 catch 包围函数。我认为这就是执行 try and catch 的方式。我已经阅读了 Java.com 上的异常处理教程,但我不确定我是否正确理解了有关我的问题的部分。

最佳答案

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

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

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

关于java - 我应该在函数中抛出 IllegalArgumentException 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304098/

相关文章:

c++ - 为所有异常使用一个基类有什么缺点?

java - 在 Java 中捕获异常与抛出异常

java - 即使在确认后,应用程序仍接受来自 google Pub/Sub 的重复消息

java - 以下代码中的错误接近抛出 IOException

java - 运行 junit 测试方法以与 JAX-RS 服务交互 - NoClassDefFoundError

python - 返回和引发异常之间有什么区别吗?

java - 返回一个值并抛出异常?

ios - Swift 中的 func 会抛出什么类型的错误?

java - 当数组为 null 或空时如何抛出 IllegalArgumentException?

java - 并行流执行时如何等待?