哪个更好?多个自定义异常类,还是一个异常类有多个自定义异常代码?

问题描述 投票:0回答:4

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

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

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

java jakarta-ee exception
4个回答
1
投票

这或多或少取决于您的业务需求。 从我的角度来看,拥有多个自定义异常类是正确的方法。

学习Java,它管理多少。

在任何给定的应用程序中,可能有 n 类型的验证要求,有些可以在一个组中表示,有些可以在另一个组中表示,但是从逻辑和业务角度来看,将所有内容都归为一个并不能达到预期目的

假设我们有一个名为

UserAuthenticationException
的类。

此异常可以代表多种不同的错误情况,并针对每种情况给出不同的消息;例如:

1.) 无效的用户名/密码

2.) 会话超时

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

使用

instanceof
和每个异常类的处理程序处理错误比根据错误消息处理错误要容易得多。


0
投票

选择最终取决于您,因为两者都可以有效。我个人发现最好创建许多自定义异常,特别是如果它们要多次使用,因为一个简单的事实是,如果我想更改错误代码或消息某种类型的异常“文件未成功上传”或“找不到项目”或无论是什么情况,我只需在一个地方(自定义异常)执行此操作,而不是在每个使用它的地方执行此操作。

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

OOP 中存在类是有原因的,您应该利用这些原因。


0
投票

从代码可维护性的角度来看,第一种方法,因为它会产生更干净/更简单的代码。异常类的名称可以告诉您问题的原因,而无需检查异常类的属性。

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.