我反复看到有关避免抛出通用RuntimeException
的评论,我试图遵循该指南。
我有一个类,它使用属性设置聚合SortedMap
以允许或禁止重复键。我试图找出当不允许重复键并尝试添加一个时应该抛出的异常。
我检查了Java文档中的Exception
类,并且没有一个已知的直接后代似乎合适。我是否只是继续创建我自己的EDuplicateMapKey
类,并抛出它?如果是这样,我如何避免使用大量的类文件,每个自定义Exception
类型一个?
这里被认为是“最佳做法”?
答案 0 :(得分:7)
创建自己的例外。例如,Java EE有DuplicateKeyException
,您可以执行类似于自定义地图的操作。
答案 1 :(得分:5)
我是否只是继续创建我自己的EDuplicateMapKey类并抛出它?
当然,是的。如果感觉像是正确的方法,不要害怕创建新的异常类型。如果您不清楚作为作者,这是正确的例外类型,那么程序员使用您的API肯定不会清楚。所以明确它,并创建自己的异常类型。
如何避免一大堆类文件,每个自定义异常类型一个?
异常类与任何其他业务逻辑类型没有区别。你不必为你的“普通”代码创建所需数量的类型(至少,我希望你没有),并且在异常类型方面你应该感觉没有区别。它们通常同样重要。
答案 2 :(得分:2)
个人,IllegalStateException或IllegalArgumentException看起来可以在这里工作,但我也可以看到反对的论点。