无法捕获日志记录中的异常

时间:2011-11-25 10:46:36

标签: java ldap

尝试使用过期密码登录ldap服务器时,日志记录中会抛出异常。

  

javax.naming.AuthenticationException:[LDAP:错误代码49 - 80090308:   LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext错误,数据   773,v1db0

我想给用户一个相应的消息,但我无法捕获该异常。 (如何获得日志记录中显示的异常?因为数据773 表示密码已过期

                CallbackHandler handler = new UsernamePasswordHandler(
                        username, password);
                LoginContext lc = new LoginContext(applicationPolicyName,
                        handler);

                try {
                    lc.login();
                } catch (Exception){
                    log.warn(e.getMessage());
                }

2 个答案:

答案 0 :(得分:1)

您需要掌握异常堆栈跟踪。 (如有必要,请更改日志记录配置,以便将堆栈跟踪写入日志。)

这会告诉你抛出异常的位置。

然后检查源代码以查看它被捕获和记录的位置,并查看是否有任何代码堆栈可以先捕获它。

答案 1 :(得分:1)

假设您要捕获的是javax.naming.AuthenticationException类型的那些,您可以将它放在try catch块中:

try {
  lc.login();
} catch(AuthenticationException e) {
   processError(e.getMessage());
}

...
private void processError(String errorMessage) {
  if (errorMessage.contains("data 773")) {
     // then do your stuff here like add error message as label etc
  }
}