尝试使用过期密码登录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());
}
答案 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
}
}