Bird
Raised Fist0
Node.jsframework~10 mins

Try-catch for synchronous errors in Node.js - Step-by-Step Execution

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
Concept Flow - Try-catch for synchronous errors
Start
Try block runs
Error thrown?
NoTry block ends normally
Yes
Catch block runs
Continue after catch
End
The code inside try runs first. If an error happens, catch runs to handle it. Then code continues after catch.
Execution Sample
Node.js
try {
  const result = 10 / 0;
  console.log('Result:', result);
} catch (error) {
  console.log('Error caught:', error.message);
}
This code tries to divide 10 by 0 and logs the result. If an error happens, it catches and logs the error message.
Execution Table
StepActionEvaluationResult
1Enter try blockNo error yetProceed
2Calculate 10 / 010 / 0 = Infinity (no error in JS)Infinity
3console.log('Result:', Infinity)Prints to consoleOutput: Result: Infinity
4Try block endsNo error thrownCatch block skipped
5Continue after try-catchProgram continues normallyEnd
💡 No error thrown, so catch block is skipped and program ends normally
Variable Tracker
VariableStartAfter Step 2Final
resultundefinedInfinityInfinity
Key Moments - 2 Insights
Why doesn't dividing by zero throw an error in JavaScript here?
Because in JavaScript dividing by zero returns Infinity, not an error. See execution_table step 2 where 10 / 0 evaluates to Infinity without throwing.
When does the catch block run?
The catch block runs only if an error is thrown inside the try block. In this example, no error is thrown, so catch is skipped (execution_table step 4).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'result' after step 2?
A0
BError
CInfinity
Dundefined
💡 Hint
Check the 'Evaluation' and 'Result' columns in row for step 2.
At which step does the catch block run in this example?
ACatch block does not run
BStep 4
CStep 3
DStep 2
💡 Hint
Look at the 'Result' column for step 4 about catch block execution.
If the code inside try threw an error, what would happen next?
ATry block continues normally
BCatch block runs to handle the error
CProgram crashes immediately
DError is ignored
💡 Hint
Refer to the concept_flow where error leads to catch block execution.
Concept Snapshot
try {
  // code that might throw error
} catch (error) {
  // handle error here
}

- Runs try block first
- If error thrown, catch runs
- If no error, catch skipped
- Only synchronous errors caught
Full Transcript
This example shows how try-catch works in Node.js for synchronous code. The try block runs first. If an error happens inside try, the catch block runs to handle it. If no error happens, catch is skipped and code continues normally. In the example, dividing 10 by 0 does not throw an error in JavaScript; it returns Infinity. So catch block does not run. This helps prevent crashes by catching errors and handling them gracefully.

Practice

(1/5)
1. What is the main purpose of using try-catch in Node.js?
easy
A. To handle errors that happen during code execution without stopping the program
B. To speed up the execution of asynchronous code
C. To declare variables that are only used inside a block
D. To format output text in the console

Solution

  1. Step 1: Understand the role of try-catch

    Try-catch is used to catch errors that happen during the running of code so the program can continue safely.
  2. Step 2: Eliminate unrelated options

    Options about speeding asynchronous code, declaring variables, or formatting output do not relate to error handling.
  3. Final Answer:

    To handle errors that happen during code execution without stopping the program -> Option A
  4. Quick Check:

    Error handling = D [OK]
Hint: Try-catch is for catching errors, not for speed or formatting [OK]
Common Mistakes:
  • Thinking try-catch speeds up code
  • Confusing try-catch with variable declaration
  • Using try-catch to format output
2. Which of the following is the correct syntax to catch synchronous errors in Node.js?
easy
A. catch { /* code */ } try (error) { /* handle error */ }
B. try { /* code */ } catch (error) { /* handle error */ }
C. try: { /* code */ } except (error) { /* handle error */ }
D. try { /* code */ } catch error { /* handle error */ }

Solution

  1. Step 1: Recall correct try-catch syntax

    The correct syntax uses try { ... } catch (error) { ... } with parentheses around the error variable.
  2. Step 2: Identify syntax errors in other options

    Options A, B, and D have wrong keywords or missing parentheses, which cause syntax errors.
  3. Final Answer:

    try { /* code */ } catch (error) { /* handle error */ } -> Option B
  4. Quick Check:

    Correct try-catch syntax = C [OK]
Hint: Remember catch always needs parentheses around error [OK]
Common Mistakes:
  • Omitting parentheses in catch
  • Using wrong keywords like except
  • Swapping try and catch blocks
3. What will be the output of this code?
try {
  throw new Error('Oops!');
  console.log('This will not run');
} catch (e) {
  console.log('Caught:', e.message);
}
medium
A. Caught: Oops!
B. This will not run
C. Error: Oops!
D. No output

Solution

  1. Step 1: Understand throw inside try block

    The throw statement immediately stops normal execution and jumps to catch.
  2. Step 2: Check catch block output

    The catch block logs 'Caught:' plus the error message 'Oops!'. The line after throw is skipped.
  3. Final Answer:

    Caught: Oops! -> Option A
  4. Quick Check:

    throw triggers catch output = B [OK]
Hint: Throw stops try block; catch runs next [OK]
Common Mistakes:
  • Expecting code after throw to run
  • Confusing error object with message
  • Thinking no output appears
4. Identify the error in this code snippet:
try {
  console.log('Start');
  throw 'Error happened';
} catch e {
  console.log('Caught:', e);
}
medium
A. Console.log syntax is wrong
B. Throw cannot use string errors
C. Missing parentheses around catch parameter
D. Try block must not contain throw

Solution

  1. Step 1: Check catch syntax

    The catch block must have parentheses around the error variable, like catch (e).
  2. Step 2: Verify other parts

    Throwing a string is allowed, console.log syntax is correct, and throw is valid inside try.
  3. Final Answer:

    Missing parentheses around catch parameter -> Option C
  4. Quick Check:

    Catch needs parentheses = A [OK]
Hint: Catch always needs parentheses around error variable [OK]
Common Mistakes:
  • Omitting parentheses in catch
  • Thinking throw can't use strings
  • Misreading console.log syntax
5. You want to safely parse JSON input that might be invalid. Which code correctly uses try-catch to handle errors and return null if parsing fails?
hard
A. return JSON.parse(input) || null;
B. if (JSON.parse(input)) { return JSON.parse(input); } else { return null; }
C. try { JSON.parse(input); } catch { return null; }
D. try { return JSON.parse(input); } catch (e) { return null; }

Solution

  1. Step 1: Understand JSON.parse error behavior

    JSON.parse throws an error if input is invalid, so we must catch it to avoid crashing.
  2. Step 2: Check each option's error handling

    try { return JSON.parse(input); } catch (e) { return null; } uses try-catch correctly and returns null on error. if (JSON.parse(input)) { return JSON.parse(input); } else { return null; } does not catch errors, causing crash. try { JSON.parse(input); } catch { return null; } misses error parameter in catch and does not return parsed value. return JSON.parse(input) || null; does not catch errors and will crash on invalid input.
  3. Final Answer:

    try { return JSON.parse(input); } catch (e) { return null; } -> Option D
  4. Quick Check:

    Use try-catch to catch JSON errors = A [OK]
Hint: Wrap JSON.parse in try-catch to handle invalid input safely [OK]
Common Mistakes:
  • Not using try-catch around JSON.parse
  • Ignoring catch error parameter
  • Assuming JSON.parse returns null on error