node.js - NodeJs 中的异常处理

标签 node.js error-handling exception-handling ldapjs

我有以下代码使用 ldapjs 进行 LDAP 身份验证。当密码错误时,我会收到错误消息。我想处理响应中返回的不同错误。

var client = ldap.createClient({
                 url: 'ldaps://test.MyCompany.com:939'
              });

 try {
        client.bind('cn=UserName,ou=employees,ou=company users,dc=company,dc=com', "PassWord", function(err, res) {
        console.log(err)
        console.log(typeof err) // prints object
        console.log(err.InvalidCredentialsError)  //prints undefined
        console.log(res);
      });
    } catch (ex) {
      console.log("Exception is", ex)
    }

当密码错误时,我得到以下响应。
 { InvalidCredentialsError: InvalidCredentialsError
[1]     at messageCallback (/Users/Santosh/...../client.js:1419:45)
[1]     at Parser.onMessage (/Users/Santosh/...../client.js:1089:14)
[1]     at emitOne (events.js:96:13)
[1]     at Parser.emit (events.js:191:7)
[1]     at Parser.write (/Users/Santosh/....../parser.js:111:8)
[1]     at TLSSocket.onData (/Users/Santosh/..../client.js:1076:22)
[1]     at emitOne (events.js:96:13)
[1]     at TLSSocket.emit (events.js:191:7)
[1]     at readableAddChunk (_stream_readable.js:176:18)
[1]     at TLSSocket.Readable.push (_stream_readable.js:134:10)
[1]     at TLSWrap.onread (net.js:563:20)
[1]   lde_message: '80090308: LdapErr: DSID-0C0903A8, comment: AcceptSecurityContext error, data 52e, v1db1\u0000',
[1]   lde_dn: null }.

我该如何处理InvalidCredentialsError在我的代码中?
除此之外,如果有任何其他异常,我也想处理它。如何在 NodeJs 中做到这一点?

最佳答案

try { ... } catch (e) { ... }不适用于异步函数。
为此,最佳实践是使用 promise 和 catch功能。对于您的示例,就像这样:

let p = new Promise((resolve, reject) => {
    let client = ldap.createClient({
        url: 'ldaps://test.MyCompany.com:939'
    });

    client.bind('cn=UserName,ou=employees,ou=company users,dc=company,dc=com', "PassWord", (err, result) => {
        if (err) {
            reject(err);
            return;
        }
        resolve(result);
    });
});


p.then(result => {
    console.log(result);
}).catch(err => {
    // error returne by reject() or the throwable exception
    console.log(err);
});;

关于node.js - NodeJs 中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42804619/

相关文章:

error-handling - swi-prolog家族树中的错误

perl - 使用 perl 模块 Log::Syslog::Fast - 无法捕获异常

xcode - 为什么 npm install 由于 Xcode 而失败?

ruby-on-rails - 营救多种继承的异常类型-匹配的顺序是什么?

javascript - 使用 Grunt Bake 观看多个文件而无需一次全部编译

android - 在 SQLite DatabaseErrorHandler 中需要做什么

ruby - 如何向 Ruby 中的异常消息添加信息?

c# - MailAddress:在邮件 header 中发现无效字符

node.js - 在 node js 中读取、编辑和保存 INI 文件的链接

javascript - Babel ES6 导入错误,SyntaxError : Unexpected token import