如何在我的场景中使用客户异常

时间:2012-09-17 03:38:32

标签: java exception-handling dao

最初我正在读java中的一些异常知识。我经历了一些建议,例如如果在jdk中已经有明确定义的异常并且不使用客户异常来处理工作流,请不要使用客户异常。我同意这些观点,他们是完全正确的。现在我在考虑如何处理这种情况。这很简单。用户登录。

1个用户名不存在 2密码错误

这些将在DAO层中知道,我必须将有用信息填充到控制器层(最终),让控制器知道发生了什么,并在视图中显示有用的提示。

当我第一次学习java时,我就是这样做的

这些是伪代码;

   if(usernotexit)
     {throw usernotExistException()}
   if(password_wrong)
     {throw passwordWrongException()}
这是一个很好的做法吗?如果没有,怎么做得好?

2 个答案:

答案 0 :(得分:0)

假设某些代码更高,堆栈正在捕获异常并显示有用的信息,这种通用方法没有问题。

但是,对于这种情况下的安全性异常,明智的做法是不要在消息中区分这两个条件给用户。如果您告诉用户哪一个错误,可以使用此信息来探测有效用户。

对于任一条件,返回给用户的响应都应为“Authentication Failed”。这样你就没有放弃任何有用的信息(例如用户存在)。

请注意内部您可能希望区分案例以进行日志记录。只是不要告诉用户发生了哪一个。

答案 1 :(得分:0)

尝试结合这两种情况:

    if(usernotexit || password_wrong)
     {
        throw user_password_Not_Match()
     }

告知最终用法不是一个好的做法,用户名是不正确的还是密码是出于安全原因。为了更高的安全性,您应该抛出一般例外。