Bird
Raised Fist0
Javascriptprogramming~5 mins

Error handling with async and await in Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of using try...catch with async/await?
It helps catch errors that happen during the asynchronous operation, allowing the program to handle them gracefully instead of crashing.
Click to reveal answer
beginner
How do you write an async function that handles errors?
Use async before the function, and wrap the await calls inside a try block. Use catch to handle any errors thrown.
Click to reveal answer
beginner
What happens if you don't use try...catch around an await expression that rejects?
The error will be unhandled and may cause the program to crash or behave unexpectedly.
Click to reveal answer
intermediate
Can you use .catch() with async/await?
Yes, you can attach .catch() to the promise returned by an async function, but using try...catch inside the async function is often clearer.
Click to reveal answer
intermediate
Why is async/await preferred over .then() and .catch() for error handling?
async/await makes asynchronous code look like normal synchronous code, which is easier to read and write, especially when handling errors with try...catch.
Click to reveal answer
What keyword do you use to handle errors in an async function?
Afor loop
Bif...else
Cswitch
Dtry...catch
What happens if an awaited promise rejects and there is no try...catch?
AThe program crashes or throws an unhandled rejection
BThe error is ignored
CThe promise resolves anyway
DThe code continues silently
Which of these is a correct way to catch errors in async/await?
Aawait fetchData().catch(error => console.log(error))
Btry { await fetchData() } catch (error) { console.log(error) }
CBoth A and B
DNeither A nor B
Why is try...catch preferred inside async functions over .then().catch()?
AIt runs faster
BIt makes code look synchronous and easier to read
CIt uses less memory
DIt disables errors
What does the 'async' keyword do?
AMarks a function to always return a promise
BMakes a function synchronous
CPrevents errors
DRuns code faster
Explain how to handle errors when using async and await in JavaScript.
Think about how you catch errors in normal code and apply it to async code.
You got /4 concepts.
    Describe the difference between using .catch() on a promise and using try...catch with async/await.
    Consider how the code looks and where the error handling happens.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using try...catch with async and await in JavaScript?
      easy
      A. To handle errors that occur during asynchronous operations
      B. To make the code run faster
      C. To convert asynchronous code into synchronous code
      D. To declare variables inside async functions

      Solution

      1. Step 1: Understand async/await behavior

        Async functions return promises, and await pauses execution until the promise settles.
      2. Step 2: Role of try...catch with async/await

        Errors in awaited promises can be caught using try...catch to prevent program crashes.
      3. Final Answer:

        To handle errors that occur during asynchronous operations -> Option A
      4. Quick Check:

        Error handling = To handle errors that occur during asynchronous operations [OK]
      Hint: Use try...catch around await to catch async errors [OK]
      Common Mistakes:
      • Thinking async/await makes code synchronous
      • Ignoring errors from awaited promises
      • Using try...catch without async functions
      2. Which of the following is the correct syntax to catch errors from an async function using await?
      easy
      A. try await asyncFunc() catch error { console.log(error); }
      B. await try { asyncFunc(); } catch (error) { console.log(error); }
      C. asyncFunc().catch(error => console.log(error));
      D. try { await asyncFunc(); } catch (error) { console.log(error); }

      Solution

      1. Step 1: Identify correct try...catch syntax

        try...catch blocks wrap code that might throw errors; await must be inside try.
      2. Step 2: Check each option's syntax

        try { await asyncFunc(); } catch (error) { console.log(error); } correctly wraps await in try and catches errors; others have syntax errors or misuse await.
      3. Final Answer:

        try { await asyncFunc(); } catch (error) { console.log(error); } -> Option D
      4. Quick Check:

        Correct try...catch with await = try { await asyncFunc(); } catch (error) { console.log(error); } [OK]
      Hint: Put await inside try block to catch errors [OK]
      Common Mistakes:
      • Placing await outside try block
      • Using incorrect try...catch syntax
      • Confusing promise.catch with try...catch
      3. What will be the output of the following code?
      async function fetchData() {
        try {
          let result = await Promise.reject('Failed');
          console.log('Success:', result);
        } catch (error) {
          console.log('Error:', error);
        }
      }
      fetchData();
      medium
      A. Success: Failed
      B. Error: Failed
      C. Uncaught (in promise) Failed
      D. No output

      Solution

      1. Step 1: Analyze Promise.reject inside try block

        Promise.reject('Failed') creates a rejected promise; await pauses until rejection.
      2. Step 2: Catch block handles the rejection error

        The rejection triggers catch block, printing 'Error: Failed'.
      3. Final Answer:

        Error: Failed -> Option B
      4. Quick Check:

        Rejected promise caught = Error: Failed [OK]
      Hint: Rejected promises inside try trigger catch block [OK]
      Common Mistakes:
      • Expecting success message on rejection
      • Missing catch block causes unhandled rejection
      • Confusing Promise.reject with Promise.resolve
      4. Identify the error in this code snippet:
      async function load() {
        try {
          const data = await fetch('https://api.example.com/data');
        } catch {
          console.log('Fetch failed');
        }
      }
      load();
      medium
      A. Missing error parameter in catch block
      B. fetch cannot be awaited
      C. async keyword is missing
      D. try block cannot contain await

      Solution

      1. Step 1: Check catch block syntax

        Catch block should have an error parameter to receive the error object.
      2. Step 2: Confirm other parts are correct

        fetch returns a promise and can be awaited; async keyword is present; try can contain await.
      3. Final Answer:

        Missing error parameter in catch block -> Option A
      4. Quick Check:

        Catch needs error parameter = Missing error parameter in catch block [OK]
      Hint: Always include error parameter in catch(e) [OK]
      Common Mistakes:
      • Omitting error parameter in catch
      • Thinking fetch is synchronous
      • Removing async keyword by mistake
      5. You want to fetch user data and then fetch posts for that user. If either fetch fails, you want to log the error and continue without stopping the program. Which code correctly handles errors using async/await?
      hard
      A. async function getUserAndPosts() { try { const user = await fetch('/user'); const posts = await fetch(`/posts?userId=${user.id}`); } catch (e) { console.log('Error:', e); } }
      B. async function getUserAndPosts() { const user = await fetch('/user').catch(e => console.log('User fetch error:', e)); const posts = await fetch(`/posts?userId=${user.id}`).catch(e => console.log('Posts fetch error:', e)); }
      C. async function getUserAndPosts() { try { const user = await fetch('/user'); } catch (e) { console.log('User fetch error:', e); } try { const posts = await fetch(`/posts?userId=${user.id}`); } catch (e) { console.log('Posts fetch error:', e); } }
      D. async function getUserAndPosts() { const user = fetch('/user'); const posts = fetch(`/posts?userId=${user.id}`); console.log('Data fetched'); }

      Solution

      1. Step 1: Understand error handling for multiple awaits

        Separate try...catch blocks allow handling errors individually without stopping the whole function.
      2. Step 2: Analyze each option

        async function getUserAndPosts() { try { const user = await fetch('/user'); } catch (e) { console.log('User fetch error:', e); } try { const posts = await fetch(`/posts?userId=${user.id}`); } catch (e) { console.log('Posts fetch error:', e); } } uses separate try...catch for user and posts fetch, logging errors and continuing execution. async function getUserAndPosts() { try { const user = await fetch('/user'); const posts = await fetch(`/posts?userId=${user.id}`); } catch (e) { console.log('Error:', e); } } stops on first error. async function getUserAndPosts() { const user = await fetch('/user').catch(e => console.log('User fetch error:', e)); const posts = await fetch(`/posts?userId=${user.id}`).catch(e => console.log('Posts fetch error:', e)); } mixes await with .catch but can cause undefined user. async function getUserAndPosts() { const user = fetch('/user'); const posts = fetch(`/posts?userId=${user.id}`); console.log('Data fetched'); } lacks await and error handling.
      3. Final Answer:

        Option C correctly handles errors separately and continues execution -> Option C
      4. Quick Check:

        Separate try...catch for each await = async function getUserAndPosts() { try { const user = await fetch('/user'); } catch (e) { console.log('User fetch error:', e); } try { const posts = await fetch(`/posts?userId=${user.id}`); } catch (e) { console.log('Posts fetch error:', e); } } [OK]
      Hint: Use separate try...catch blocks to handle multiple awaits safely [OK]
      Common Mistakes:
      • Using one try...catch for multiple awaits stopping on first error
      • Mixing await with .catch causing undefined variables
      • Not awaiting fetch calls
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard