哪个更好 ?许多自定义异常类,或一个具有许多自定义异常代码的异常类?

时间:2014-12-05 07:02:11

标签: java java-ee exception-handling

在标准J2EE Web应用程序中,假设应用程序启动期间的类​​加载时间不是问题,这在维护,性能和可用性方面是更好的方法吗?

第一种方法涉及创建不同的异常类,每个异常类表示应用程序中发生的特定错误。类名是自解释的,并且将用于提供错误消息。 (更新:截至目前,课程数量约为30,并且在不久的将来会继续增加,最多可能达到70或80)

secodn方法涉及创建一个异常类和一堆异常代码,其中每个代码代表应用程序中的特定错误。错误代码从异常中获取,用于提供错误消息。

4 个答案:

答案 0 :(得分:1)

它或多或少取决于您的business needs。 从我的角度来看,拥有多个自定义异常类是正确的方法。

从Java学习,管理多少。

在任何给定的应用程序中,可以有n type of validations少数可以在一个组下进行分组,少数可以在另一组中进行,但是将所有内容整合到单个中并不能解决逻辑和的目的业务。

让我们说,

<强> UserAuthenticationException

它可以掩盖的案例,并针对不同的案例提供不同的错误消息。

1。)用户名/密码无效

2.)会话超时

3.)不同机器中同一用户的多个活动令牌等......

稍后使用 instanceof 或创建处理程序来表示不同的异常类比使用消息更容易。

答案 1 :(得分:0)

选择最终取决于你,因为两者都是有效的。我个人认为最好制作许多自定义异常,特别是如果它们将被多次使用,因为如果我想更改错误代码或消息某种类型的异常“文件没有成功上传”或“找不到物品”或者不管是什么情况,我只需要在一个地方,自定义例外,而不是在每个使用它的地方。

这也允许您捕获那些在代码的其他部分中抛出的特定异常。如果异常是“找不到文件”异常,你可能需要做额外的工作,在这种情况下,你只能抓住你想以不同方式处理的那些异常 - 如果它们都是同一个类,那将会更加困难

由于某种原因,OOP中存在类,您应该利用这些原因。

答案 2 :(得分:0)

从代码维护的角度来看,第一种方法,因为它导致更清晰/更简单的代码。异常类的名称为您提供问题的原因,而无需检查异常类的属性。

从性能的角度来看,第二种方法,&#34;更少的异常类意味着更小 内存占用和减少加载类所花费的时间&#34; (Effective Java,第60项)。但请记住,过早优化是所有邪恶的根源。因此,在您确认应用程序存在性能问题之前,请不要尝试对其进行优化。

答案 3 :(得分:0)

应用程序中的大多数异常都由一些通用恢复处理;可能涉及生成日志文件并终止或重新启动进程。没有理由将它们作为不同的类型。

在不太常见的情况下,需要特定的恢复过程,该过程应该有一个特定的错误类。