Promises help handle tasks that take time, like loading data. Using catch lets you catch errors easily when something goes wrong.
Promise catch for async errors in Node.js
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Node.js
promiseFunction()
.then(result => {
// handle success
})
.catch(error => {
// handle error
});The catch method catches any error from the promise or previous then blocks.
It helps keep error handling separate and clear.
Examples
Node.js
fetchData()
.then(data => console.log(data))
.catch(err => console.error('Error:', err));Node.js
readFileAsync('file.txt') .then(content => console.log(content)) .catch(error => console.log('Failed to read file:', error));
then block.Node.js
someAsyncTask()
.catch(err => console.log('Task failed:', err));Sample Program
This program tries to read a file called example.txt. If it works, it prints the content. If the file is missing or unreadable, it catches the error and prints a friendly message.
Node.js
import { readFile } from 'node:fs/promises'; function readFileContent(path) { return readFile(path, 'utf8'); } readFileContent('example.txt') .then(content => { console.log('File content:', content); }) .catch(error => { console.log('Error reading file:', error.message); });
Important Notes
Always use catch to avoid unhandled promise errors that crash your program.
You can chain multiple then calls before a single catch to handle errors from any step.
Summary
Use catch to handle errors from promises cleanly.
catch helps keep your code safe and easy to read.
It works for any error in the promise chain.
Practice
1. What is the main purpose of using
catch with a Promise in Node.js?easy
Solution
Step 1: Understand what
Thecatchdoes in Promisescatchmethod is designed to handle any errors that happen during the execution of a Promise or in the chain of Promises.Step 2: Identify the role of
It catches rejected Promises or exceptions thrown insidecatchin error handlingthencallbacks, preventing unhandled errors.Final Answer:
To handle errors that occur during the asynchronous operation -> Option CQuick Check:
Promisecatch= error handler [OK]
Hint: Remember:
catch always handles errors in promises [OK]Common Mistakes:
- Thinking
catchstarts the async operation - Confusing
catchwith success handlers - Believing
catchmakes code synchronous
2. Which of the following is the correct syntax to catch errors from a Promise named
myPromise?easy
Solution
Step 1: Recall the Promise error handling syntax
The correct method to handle errors in a Promise iscatch, which takes a callback for the error.Step 2: Match the syntax with the options
myPromise.catch(error => console.log(error)); usescatchcorrectly with an arrow function to log the error.Final Answer:
myPromise.catch(error => console.log(error)); -> Option BQuick Check:
Usecatchfor errors in Promises [OK]
Hint: Use
.catch() after Promise to handle errors [OK]Common Mistakes:
- Using
thento catch errors - Using non-existent
errormethod - Confusing
finallywith error handling
3. What will be logged to the console when running this code?
Promise.reject('Error happened')
.catch(err => console.log('Caught:', err));medium
Solution
Step 1: Understand Promise.reject and catch
Promise.reject('Error happened')creates a rejected Promise with the error message 'Error happened'.Step 2: Analyze the catch callback
Thecatchmethod receives the error and logs it prefixed with 'Caught:'.Final Answer:
Caught: Error happened -> Option AQuick Check:
Rejected Promise caught logs error [OK]
Hint: Rejected Promise triggers
catch callback [OK]Common Mistakes:
- Expecting error to be logged without 'Caught:' prefix
- Thinking error is uncaught and crashes program
- Assuming nothing logs because of rejection
4. Identify the error in this code snippet that tries to catch a Promise rejection:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(console.error());medium
Solution
Step 1: Check how
The code callscatchis usedconsole.error()immediately and passes its result (undefined) tocatch, which expects a function.Step 2: Understand correct
catchusagecatchshould receive a function reference or arrow function, likecatch(error => console.error(error)).Final Answer:
Thecatchmethod is called with the result ofconsole.error()instead of a function -> Option DQuick Check:
Pass function tocatch, not call it [OK]
Hint: Pass function to
catch, don't call it immediately [OK]Common Mistakes:
- Calling
console.error()insidecatchinstead of passing function - Ignoring that
fetchreturns a Promise - Misplacing
response.json()call
5. Given this code, what will be the output and why?
async function getData() {
return Promise.reject('Failed to load');
}
getData()
.then(data => console.log('Data:', data))
.catch(err => {
console.log('Error caught:', err);
return 'Default data';
})
.then(result => console.log('Result:', result));hard
Solution
Step 1: Analyze the rejected Promise from
The function returns a rejected Promise with message 'Failed to load', so the firstgetDatathenis skipped and control goes tocatch.Step 2: Understand the
Thecatchand subsequentthencatchlogs the error and returns 'Default data', which resolves the Promise chain. The nextthenreceives this value and logs it.Final Answer:
Error caught: Failed to load Result: Default data -> Option AQuick Check:
catchhandles error and returns value for nextthen[OK]
Hint: Returned value from
catch goes to next then [OK]Common Mistakes:
- Thinking error stops the chain completely
- Expecting no output after
catch - Confusing rejected Promise with resolved data
