Bird
Raised Fist0
Node.jsframework~5 mins

Error handling in async/await in Node.js - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the main way to handle errors when using async/await in Node.js?
Use a try/catch block around the await expression to catch and handle errors.
Click to reveal answer
beginner
Why should you avoid using .then() and .catch() with async/await?
Because async/await is designed to work with try/catch for clearer, simpler error handling and better readability.
Click to reveal answer
intermediate
What happens if an error is not caught inside an async function?
The async function returns a rejected Promise, which can cause unhandled promise rejection warnings if not handled elsewhere.
Click to reveal answer
intermediate
How can you handle multiple async operations with error handling?
Use try/catch around each await or use Promise.all with try/catch to handle errors from multiple async calls.
Click to reveal answer
beginner
Show a simple example of error handling using async/await in Node.js.
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const json = await response.json();
    return json;
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}
Click to reveal answer
What keyword is used to wait for a Promise to resolve inside an async function?
Aawait
Bwait
Casync
Dthen
How do you catch errors when using async/await?
AUsing console.log
BUsing try/catch blocks
CUsing setTimeout
DUsing if/else statements
What happens if you forget to use try/catch around an await that rejects?
AThe error is ignored silently
BThe program automatically retries
CThe program crashes immediately
DThe error becomes an unhandled promise rejection
Which of these is a good practice for handling multiple async calls with error handling?
AUse multiple nested callbacks
BIgnore errors for faster code
CWrap Promise.all inside try/catch
DUse synchronous loops
Can async functions return values directly?
ANo, they always return a Promise
BYes, like normal functions
COnly if you use return await
DOnly if you use callbacks
Explain how to handle errors in async/await functions in Node.js.
Think about how you catch errors in synchronous code and apply that to async functions.
You got /4 concepts.
    Describe what happens if an awaited Promise rejects and there is no try/catch block.
    Consider what happens when errors are not caught in normal code.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using try/catch blocks with async/await in Node.js?
      easy
      A. To catch and handle errors from asynchronous operations
      B. To speed up the execution of async functions
      C. To convert async functions into synchronous ones
      D. To automatically retry failed async operations

      Solution

      1. Step 1: Understand async/await behavior

        Async functions return promises and can throw errors when awaited operations fail.
      2. Step 2: Role of try/catch

        Try/catch blocks catch these errors to prevent crashes and allow handling.
      3. Final Answer:

        To catch and handle errors from asynchronous operations -> Option A
      4. Quick Check:

        Error handling = A [OK]
      Hint: Use try/catch around await to catch errors [OK]
      Common Mistakes:
      • Thinking async/await automatically handles errors
      • Using try/catch outside async functions only
      • Ignoring errors causing app crashes
      2. Which of the following is the correct syntax to handle errors in an async function using async/await?
      easy
      A. async function fetchData() { try { await fetch(url); } catch (err) { console.error(err); } }
      B. async function fetchData() { await fetch(url); }
      C. async function fetchData() { try { fetch(url); } catch (err) { console.error(err); } }
      D. async function fetchData() { await fetch(url).catch(console.error); }

      Solution

      1. Step 1: Check proper use of try/catch with await

        async function fetchData() { try { await fetch(url); } catch (err) { console.error(err); } } correctly wraps the await call inside try and catches errors.
      2. Step 2: Identify incorrect patterns

        async function fetchData() { await fetch(url).catch(console.error); } uses .catch on await which is invalid syntax; async function fetchData() { try { fetch(url); } catch (err) { console.error(err); } } misses await; async function fetchData() { await fetch(url); } has no error handling.
      3. Final Answer:

        async function fetchData() { try { await fetch(url); } catch (err) { console.error(err); } } -> Option A
      4. Quick Check:

        Try/catch with await = D [OK]
      Hint: Put await inside try block to catch errors [OK]
      Common Mistakes:
      • Using .catch() directly on await expression
      • Forgetting to use await inside try
      • Not catching errors at all
      3. Consider this code snippet:
      async function getData() {
        try {
          const response = await fetch('https://api.example.com/data');
          const data = await response.json();
          return data;
        } catch (error) {
          return 'Error occurred';
        }
      }
      
      getData().then(console.log);

      What will be logged if the fetch fails due to network error?
      medium
      A. An unhandled promise rejection error
      B. The raw error object
      C. Undefined
      D. 'Error occurred'

      Solution

      1. Step 1: Analyze try/catch behavior on fetch failure

        If fetch fails, control jumps to catch block which returns 'Error occurred'.
      2. Step 2: Understand promise resolution

        getData returns a resolved promise with string 'Error occurred', so console.log prints that string.
      3. Final Answer:

        'Error occurred' -> Option D
      4. Quick Check:

        Catch returns string on error = B [OK]
      Hint: Catch block return value is logged on error [OK]
      Common Mistakes:
      • Expecting unhandled error instead of caught return
      • Confusing error object with returned string
      • Ignoring async function returns promise
      4. Identify the error in this async function:
      async function loadUser() {
        try {
          const user = fetch('https://api.example.com/user');
          console.log(user.name);
        } catch (err) {
          console.error(err);
        }
      }
      medium
      A. Incorrect catch block syntax
      B. Missing await before fetch causing user to be a Promise
      C. console.log should be inside catch block
      D. fetch URL is invalid

      Solution

      1. Step 1: Check fetch usage

        fetch returns a Promise; without await, user is a Promise object, not the resolved data.
      2. Step 2: Consequence of missing await

        Accessing user.name fails because user is not the actual data but a Promise.
      3. Final Answer:

        Missing await before fetch causing user to be a Promise -> Option B
      4. Quick Check:

        Await missing = A [OK]
      Hint: Always await fetch to get resolved data before use [OK]
      Common Mistakes:
      • Forgetting await before async calls
      • Assuming fetch returns data directly
      • Misplacing console.log outside async flow
      5. You want to fetch user data and then fetch posts by that user. Both calls can fail. How should you handle errors to ensure you catch failures in either step and log a clear message?
      async function getUserPosts(userId) {
        // Your code here
      }
      hard
      A. Use nested try/catch blocks: one for user fetch, one for posts fetch
      B. Use .then().catch() chaining instead of async/await
      C. Use a single try/catch wrapping both awaits for user and posts fetch
      D. Ignore errors and let them crash the app

      Solution

      1. Step 1: Understand error flow in async/await

        A single try/catch can catch errors from any awaited call inside it.
      2. Step 2: Simplify error handling

        Wrapping both awaits in one try/catch logs errors clearly without nesting complexity.
      3. Final Answer:

        Use a single try/catch wrapping both awaits for user and posts fetch -> Option C
      4. Quick Check:

        One try/catch covers multiple awaits = C [OK]
      Hint: Wrap all awaits in one try/catch for simple error handling [OK]
      Common Mistakes:
      • Overcomplicating with nested try/catch
      • Using .then().catch() mixing styles
      • Not handling errors causing silent failures