【发布时间】:2014-10-23 14:29:15
【问题描述】:
我正在开发具有自定义异常的旧系统,该异常在任何地方都使用 gosh-frickity-everywhere。它的灵感来自 ServletException 类,它说“只要你的 Servlet 中有异常,你就会想抛出这个 ServletException”。
随着系统的发展(超过 10 年),出现了一个在更高级别捕获异常的更强大的系统,并且不再需要在此自定义异常中包装每个异常。 (有人可能会说它从来没有,但那是另一回事了。它是一个稳定的应用程序,所以我倾向于不抱怨太多!!)但是我们不会一次重构它们,只是随着时间的推移慢慢地重构它们。
但是,如果自定义异常是运行时异常而不是已检查异常,则可以使事情变得更简单的一件事。这样我们就不需要在任何地方显式地捕获它,并且尚未重构的遗留代码将继续抛出它,就像它们在发生空指针异常时抛出空指针异常一样。
我的问题是... 采用一次检查的异常并使其成为运行时异常有什么副作用?
除了对不必要的检查和抛出声明的警告之外,我想不出任何东西,但如果能从以前一直走这条路的人那里得到意见,那就太好了。
【问题讨论】:
-
出色地使用“gosh-frickity-everywhere”
-
这是来自更文明时代的优雅武器。
-
和你一样,我真的想不出任何短期内的副作用。从长远来看,您可能需要考虑如果此异常一直沿堆栈链向上传播,需要进行哪些处理。
-
事实上,我们可以处理任何异常,而不仅仅是我们的自定义异常,因为它会向上传播堆栈,这就是我想逐步淘汰自定义异常的原因。但由于我们会随着时间的推移逐步淘汰它,因此我们可以通过将旧代码设为运行时异常来简化使用旧代码的新代码。
标签: java runtimeexception