每个模块(在多模块Maven项目中)是否应该有自己专用的异常?

时间:2018-10-29 23:07:17

标签: java exception exception-handling

我们有一个多模块Maven项目,其中每个模块都有自己的关联异常。例如,tree-service-module将具有TreeServiceException,user-service-module将具有UserServiceException,login-service-module将具有LoginServiceException。

这三个模块中的每个模块都有一个主要的Service类:TreeService,UserService和LoginService。 TreeService中的每个方法均引发TreeServiceException,UserService中的每个方法均引发UserServiceException,LoginService中的每个方法均引发LoginServiceException。我们通过记录这些异常并将它们扔到调用层次结构中来处理这些异常。

这是一个好的设计吗?乍一看,在我看来这些例外没有用。相反,它们产生不必要的代码。此外,它们代替了有用的异常,而这些有益的异常将被忽略。一种方法最多抛出一个异常是一种标准做法,在这种情况下,我们用一个无用的异常填充该插槽。最后,我不确定让类中的每个方法都符合抛出相同的异常是否有帮助。

您有什么想法?

1 个答案:

答案 0 :(得分:1)

我会说这个问题主要是基于观点的。但是,我选择使用三个不同的类。

我的主要论点是,您可以使用ExceptionRuntimeException的其他子类(更适合引发异常的原因)并利用message类的构造函数接受的参数(可选)。

使用此message参数,您可以准确指定引发异常的模块(如果需要,请参阅stacktrace会告诉您引发异常的位置),以及有关当前模块的其他有用信息程序状态。