1. Error handling: In Node.js wordt error handling meestal uitgevoerd via callbacks. Wanneer een functie een fout tegenkomt, roept deze haar callbackfunctie aan en geeft de fout als eerste parameter door. U zou uw code moeten schrijven om deze fouten op te vangen en op gepaste wijze te behandelen. Voorbeeld:
\`\`\`javascript fs.readFile(‘somefile.txt’, function(err, data) { if (err) { console.error(‘Er is een fout opgetreden tijdens het lezen van het bestand!’, err); return; } console.log(data); }); \`\`\`1. Exceptions: Als uw Node.js-code een onverwachte fout tegenkomt en een uitzondering of “exception” genereert, dan wordt de fout gegooid en kan ze worden gevangen en behandeld in een try/catch-blok. Indien niet gevangen, zal deze error de Node.js-applicatie doen crashen.
\`\`\`javascript try { const data = fs.readFileSync(‘somefile.txt’); console.log(data); } catch (err) { console.error(‘Er is een fout opgetreden tijdens het lezen van het bestand!’, err); } \`\`\`1. Promise rejection: Als u JavaScript promises gebruikt, kunnen rejections optreden als equivalent van een asynchrone exception. Deze moeten afzonderlijk worden afgehandeld met behulp van .catch op de promise.
\`\`\`javascript doSomethingAsync() .then(successHandler) .catch(errorHandler); \`\`\`1. Event Emitters: Node.js gebruikt ‘Event Emitters’ voor veel ingebouwde modules. Fouten van een Event Emitter worden meestal doorgegeven aan een ‘error’-event. Deze moeten worden afgehandeld door naar het ‘error’-event te luisteren.
\`\`\`javascript const myEventEmitter = new MyEventEmitter(); myEventEmitter.on(‘error’, (err) => { console.error(‘Er is een fout opgetreden!’, err); }); \`\`\`1. Unhandled exceptions en unhandled promise rejections: Tenslotte, voor errors die nergens anders worden gevangen, kunt u luisteren naar de ‘uncaughtException’ en ‘unhandledRejection’-events op het procesobject om de fout te loggen en het proces op een veilige manier af te sluiten.
\`\`\`javascript process.on(‘uncaughtException’, (err) => { console.error(‘Unhandled exception!’, err); process.exit(1); }); process.on(‘unhandledRejection’, (reason, promise) => { console.error(‘Unhandled promise rejection!’, reason); process.exit(1); }); \`\`\`Richtlijn zou moeten zijn om uw best te doen om fouten op te vangen waar ze kunnen optreden, zodat gebruikers een duidelijke foutmelding krijgen in plaats van een gecrashte applicatie. U kunt eventueel ook third-party libraries gebruiken zoals ‘express-async-errors’ voor het afhandelen van asynchrone function errors in express middleware.