You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.3 KiB
2.3 KiB
Gracefully catches errors
Every error is sent trough a throw, meaning that errors is handeled with a .catch() block or in a try/catch way.
Most errors can come from an API block.
Every requests is managed with a Promise, so you need to handle that with async/await or with a .then() block
Example with main request
const TMIO = require('trackmania.io'),
client = new TMIO.Client();
client.campaigns.currentSeason().then(async campaign=>{
console.log('The actual official campaign is', campaign.name);
console.log('The image URL of this campaign is:', campaign.image);
try {
// Here, we try to execute another request, but in a async way
// so we need to use try/catch
console.log('Top 10 of this campaign:');
const leaderboard = await campaign.leaderboard();
leaderboard.forEach(top=>{
console.log(top.position, top.playerName, "with", top.points, "points");
});
} catch (err) {
// Here, an script or API error is throwed
console.error(err);
// Mostly, if it's an API block, you'll have this message:
// "You are blocked from the API. Please get in touch with @Miss#8888 on Discord: https://openplanet.nl/link/discord - or DM me on Twitter: https://twitter.com/codecatt -- For more information on third-party API usage, see the following page: https://openplanet.nl/tmio/api"
}
}).catch(err=>{
// An error, sadge
// Meanwhile, this is the same as a try/catch
console.error(err);
})
Example with side requests
Side requests is requests made to another domain than trackmania.io (trackmania.exchange for example), this does not throws a error but emit an "error" Event.
Error events is not a big deal than main errors
To catch them, you just need to add a client.on("error", error=>...) block
const TMIO = require('trackmania.io'),
client = new TMIO.Client();
client.maps.get("89OtLgP9IRQzmC9n_h0SrIr8l_4").then(map=>{
console.log(map.name);
}).catch(err=>{
// Here, we got a tm.io error, because it's the main thing after all
console.error(err);
});
client.on("error", error=>{
// But here, errors can come from another services for the map info
// Trackmania Exchange for example
console.error(error);
});