Throwing exceptions in PHP - Time & Space Complexity
When we throw exceptions in PHP, it's important to know how this affects the program's speed.
We want to see how the time to run changes when exceptions happen.
Analyze the time complexity of the following code snippet.
<?php
function checkNumber(int $num) {
if ($num < 0) {
throw new Exception("Negative number not allowed");
}
return $num;
}
for ($i = 0; $i < $n; $i++) {
try {
checkNumber($i - $n);
} catch (Exception $e) {
// continue
}
}
?>
This code loops from i = 0 to n-1, calling checkNumber($i - $n) every time, which throws an exception since $i - $n < 0.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop runs the checkNumber function for each number.
- How many times: It runs exactly n times, once for each number from 0 to n-1.
As n grows, the number of checks grows the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 checks, some throw exceptions |
| 100 | 100 checks, more exceptions thrown |
| 1000 | 1000 checks, many exceptions thrown |
Pattern observation: The number of operations grows directly with n, even if exceptions happen.
Time Complexity: O(n)
This means the time to run grows in a straight line as the input size grows.
[X] Wrong: "Throwing exceptions inside a loop makes the program run much slower, like exponentially slower."
[OK] Correct: Throwing exceptions does add some cost, but it does not multiply the work inside the loop. The loop still runs once per item, so time grows linearly.
Understanding how exceptions affect time helps you write clear and efficient error handling in real projects.
"What if the exception was thrown only once outside the loop instead of inside? How would the time complexity change?"