Search code examples
javascriptnode.jsdiscorddiscord.js

Discordjs could not catch a DiscordAPIError


Basically the problem is that even if I wrap the code that causes the error in try catch, the error still stops the code, here's my code.

// snip
try{
    // get user using id "does-not-exist", which does not exist
    // code stops when fetching user
    client.users.fetch('does-not-exist').then(function (user) {
        user.send('hello');
    });
}catch(err){
    console.error('message could not be sent');
}

Why does my code stops even if I wrap it with try catch?


Solution

  • try/catch should be used in combination with async/await. If you want to use synchronous then/catch, use the respective .catch() callback.

    client.users.fetch('does-not-exist')
       .then(function (user) {
            user.send('hello');
       })
       .catch(err => /* error handle */);
    

    If you want to ignore the error void it

    .catch(_ => null);
    

    How it would look with async await

    try {
       const user = await client.users.fetch('does-not-exist')
    } catch (err) {
       /* Handle Error */
    }