1

这更像是一个最佳实践问题。我希望在这里问这个问题是可以的。我正在创建一个接口,该接口将用作我们 API 的一部分。我有一个名为的方法getSomeObject(),它在幕后有一个复杂的逻辑并返回SomeObject。在幕后我正在调用抛出的方法IllegalArgumentException,所以我的可能getSomeObject()方法可能会抛出此异常。我遇到的问题是 API 的用户不熟悉 API 的内部工作原理,也不明白为什么会抛出异常。由于该参数是在我的方法中创建的,而用户甚至不知道该参数的存在。我试图记录它,但这个异常的原因会使 API 的用户感到困惑。所以我的问题是,解决这种情况的最佳方法是什么?记录此异常的正确方法是什么?

4

2 回答 2

7

从不带任何参数的方法中抛出一个IllegalArgumentException确实很令人困惑。

我想如果getSomeObject没有正确定义外部的东西,你会得到那个例外。所以你可能会抛出一个IllegalStateException, 并在你的 javadoc 中用一个解释来记录它:

@throws IllegalStateException If member variable xyz is not initialised.  
                              This can happen if method `init()` has not been   
                              called before `getSomeObject`.
于 2013-02-14T16:44:02.757 回答
1

当您说您的内部代码有可能抛出 IllegalArgumentException 时,您是如何处理的?
是用户输入错误造成的吗?
如果不是,那么您应该抓住它并处理它,如果仍然必须抛出它,则必须将其转换为用户可以理解的异常,
或者这种情况发生的可能性不大并且纯粹是理论上的?
如果这是一个用户应该处理的有效异常场景,你应该抛出一个适当的检查异常并在你的界面中声明它

于 2013-02-14T16:46:57.830 回答