我正在开发一个向客户端提供方法的RPC Web服务,我想使用Exceptions来处理服务器应用程序中的错误,以便自动生成带有错误标头的响应,更重要的是,自定义错误代码(整数)。我创建了一个基类CustomException类,它包含一个整数和消息。
我是否应该为每个方法的每个异常创建一个新类,并在类上对其自定义错误代码进行硬编码?或者还有另一种解决这个问题的方法吗?
e.g。让我假设我有一个Login方法,它有两个例外," UnknownUsername"和" InvalidPassword" (仅作为一个例子;正如Tieston T.评论的那样,返回身份验证信息并不是一个好习惯)。到目前为止我能想到的方法是:
LoginException
类和在内部方法上设置错误代码 UnknownUsernameException
和InvalidPasswordException
类,继承LoginException
,对每个类的错误代码进行硬编码 答案 0 :(得分:1)
如果需要,可以创建单独的异常类。
或者您可以创建一个单独的自定义异常类,其中包含一个ENUM,其中包含可能发生的各种类型异常的error_code和消息。
您的自定义异常类将包含将接受ENUM和消息的构造函数。
每当代码抛出自定义异常时,它将通过构造函数填充枚举。您可以从中查找错误代码和错误消息,并相应地将其传递给客户端。
这将帮助您记录异常(供内部使用)并通过一个单独的类响应客户端。
答案 1 :(得分:0)
我认为你应首先搜索标准的java异常,看看Java Exceptions是否已经满足你的需求,如果没有,你可以找到最近的那个并覆盖它以满足你的需要。
对我来说,我更喜欢将以下异常与一个例外UnknownUsername
和InvalidPassword
异常相结合,请不要告诉任何人有关用户名或密码的异常也是你。所以不要继承LoginException
答案 2 :(得分:0)
通常最好使用标准的Exception类。 This是我发现有用的异常处理最佳实践的良好来源。
我认为应该根据应用程序如何处理它们来创建自定义异常类。例如,如果要捕获与登录相关的异常并向用户显示“登录失败”消息,则可能应创建一个类。对于内部使用和日志记录,您可以向对象添加更多详细信息。
此外,为了维护目的,最好不要定义硬代码错误代码,以防稍后添加一些新的错误代码。