实现自定义异常树的最准确方法是什么?

时间:2014-05-20 05:19:33

标签: c# java exception-handling error-code

我正在开发一个向客户端提供方法的RPC Web服务,我想使用Exceptions来处理服务器应用程序中的错误,以便自动生成带有错误标头的响应,更重要的是,自定义错误代码(整数)。我创建了一个基类CustomException类,它包含一个整数和消息。

我是否应该为每个方法的每个异常创建一个新类,并在类上对其自定义错误代码进行硬编码?或者还有另一种解决这个问题的方法吗?

e.g。让我假设我有一个Login方法,它有两个例外," UnknownUsername"和" InvalidPassword" (仅作为一个例子;正如Tieston T.评论的那样,返回身份验证信息并不是一个好习惯)。到目前为止我能想到的方法是:

  • 使用LoginException类和在内部方法上设置错误代码
  • 创建UnknownUsernameExceptionInvalidPasswordException类,继承LoginException对每个类的错误代码进行硬编码

3 个答案:

答案 0 :(得分:1)

如果需要,可以创建单独的异常类。

或者您可以创建一个单独的自定义异常类,其中包含一个ENUM,其中包含可能发生的各种类型异常的error_code和消息。

您的自定义异常类将包含将接受ENUM和消息的构造函数。

每当代码抛出自定义异常时,它将通过构造函数填充枚举。您可以从中查找错误代码和错误消息,并相应地将其传递给客户端。

这将帮助您记录异常(供内部使用)并通过一个单独的类响应客户端。

答案 1 :(得分:0)

我认为你应首先搜索标准的java异常,看看Java Exceptions是否已经满足你的需求,如果没有,你可以找到最近的那个并覆盖它以满足你的需要。

对我来说,我更喜欢将以下异常与一个例外UnknownUsernameInvalidPassword异常相结合,请不要告诉任何人有关用户名或密码的异常也是你。所以不要继承LoginException

答案 2 :(得分:0)

通常最好使用标准的Exception类。 This是我发现有用的异常处理最佳实践的良好来源。

我认为应该根据应用程序如何处理它们来创建自定义异常类。例如,如果要捕获与登录相关的异常并向用户显示“登录失败”消息,则可能应创建一个类。对于内部使用和日志记录,您可以向对象添加更多详细信息。

此外,为了维护目的,最好不要定义硬代码错误代码,以防稍后添加一些新的错误代码。