Catching runtime errors in Javascript - Time & Space Complexity
When we catch runtime errors in JavaScript, we want to know how the time to handle errors grows as the program runs.
We ask: how does the cost of catching errors change when the code runs more or with bigger inputs?
Analyze the time complexity of the following code snippet.
try {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === null) {
throw new Error('Null value found');
}
process(arr[i]);
}
} catch (error) {
console.error(error.message);
}
This code loops through an array, processes each item, and throws an error if a null is found, which is then caught.
- Primary operation: The for-loop that goes through each item in the array.
- How many times: Once for each element until a null is found or the end is reached.
The time to run grows as the array gets bigger because the loop checks each item one by one.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 checks and processes |
| 100 | About 100 checks and processes |
| 1000 | About 1000 checks and processes |
Pattern observation: The work grows steadily as the input size grows; more items mean more checks.
Time Complexity: O(n)
This means the time to catch errors grows in direct proportion to the number of items checked.
[X] Wrong: "Catching an error inside the loop makes the whole process take longer than checking all items normally."
[OK] Correct: The error is only caught when thrown, and the loop stops early; otherwise, the loop runs normally, so catching errors doesn't add extra time unless an error happens.
Understanding how error handling affects time helps you write reliable code and explain your thinking clearly in interviews.
"What if we moved the try-catch block inside the loop to catch errors for each item separately? How would the time complexity change?"
Practice
What is the main purpose of using try and catch in JavaScript?
Solution
Step 1: Understand the role of
Thetryblocktryblock runs code that might cause an error.Step 2: Understand the role of
Thecatchblockcatchblock handles any error from thetryblock to keep the program running smoothly.Final Answer:
To handle errors and prevent the program from crashing -> Option CQuick Check:
try-catch = error handling [OK]
- Thinking try-catch speeds up code
- Using try-catch to create variables
- Confusing try-catch with loops
Which of the following is the correct syntax to catch errors in JavaScript?
try {
// code
} catch (error) {
// handle error
}Solution
Step 1: Check the
Thetryblock syntaxtryblock must be followed bycatchwith parentheses around the error variable.Step 2: Verify the
The correct syntax iscatchblock syntaxcatch (error) { }with parentheses around the error parameter.Final Answer:
try { } catch (error) { } -> Option AQuick Check:
catch needs parentheses [OK]
- Omitting parentheses in catch
- Using parentheses after try
- Adding parentheses after catch keyword
What will be the output of the following code?
try {
let result = 10 / 0;
console.log(result);
} catch (e) {
console.log('Error caught');
}Solution
Step 1: Understand division by zero in JavaScript
Dividing 10 by 0 does not cause an error; it results inInfinity.Step 2: Check if catch block runs
Since no error occurs, thecatchblock is skipped andInfinityis logged.Final Answer:
Infinity -> Option AQuick Check:
10/0 = Infinity, no error [OK]
- Assuming division by zero throws error
- Expecting catch block to run
- Confusing 0 with Infinity
Find the error in this code and choose the correct fix:
try {
console.log(x);
} catch e {
console.log('Error:', e.message);
}Solution
Step 1: Identify syntax error in catch block
The catch block must have parentheses around the error variable, socatch eis invalid syntax.Step 2: Correct the catch syntax
Changing it tocatch (e)fixes the syntax and allows error handling.Final Answer:
Change catch e to catch (e) -> Option BQuick Check:
Catch needs parentheses around error [OK]
- Omitting parentheses in catch
- Adding finally when not needed
- Ignoring undeclared variable error
You want to safely parse JSON data that might be invalid. Which code snippet correctly catches parsing errors?
const jsonString = '{"name": "Alice", age: 25}';
try {
const data = JSON.parse(jsonString);
console.log(data.name);
} catch (error) {
console.log('Invalid JSON:', error.message);
}Solution
Step 1: Understand JSON.parse behavior
JSON.parse throws an error if the JSON string is invalid, like missing quotes around keys.Step 2: Check try-catch usage
The try block runs JSON.parse, and the catch block handles any parsing error to avoid crashing.Final Answer:
This code correctly catches JSON parsing errors and logs a message -> Option DQuick Check:
try-catch handles JSON.parse errors [OK]
- Assuming JSON.parse never throws errors
- Placing catch block incorrectly
- Using if-else instead of try-catch for errors
Ready to prove it?
Pass the test and this pattern moves unknown
