Try–except execution flow in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When using try-except blocks, it is important to understand how the program runs depending on whether an error happens or not.
We want to see how the time the program takes changes as the input or situation changes.
Analyze the time complexity of the following code snippet.
def process_items(items):
results = []
for item in items:
try:
result = 10 / item
except ZeroDivisionError:
result = 0
results.append(result)
return results
This code tries to divide 10 by each item in a list, catching any division by zero errors and replacing those results with zero.
- Primary operation: Looping through each item in the list and performing division inside try-except.
- How many times: Once for each item in the input list.
Each item causes one division attempt and possibly an exception check.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 divisions and exception checks |
| 100 | About 100 divisions and exception checks |
| 1000 | About 1000 divisions and exception checks |
Pattern observation: The work grows directly with the number of items; doubling items roughly doubles the work.
Time Complexity: O(n)
This means the time to run grows in a straight line with the number of items processed.
[X] Wrong: "Try-except blocks make the code run much slower for all cases."
[OK] Correct: The try-except only adds a small check each time; it only slows down noticeably if many exceptions actually happen, but normal runs are close to normal speed.
Understanding how try-except affects time helps you write clear and efficient error handling, a skill valued in real projects and interviews.
"What if the except block contained a loop over the entire list? How would the time complexity change?"
Practice
try-except block in Python?Solution
Step 1: Understand the role of
Thetryblocktryblock contains code that might cause an error during execution.Step 2: Understand the role of
Theexceptblockexceptblock catches and handles the error so the program does not stop abruptly.Final Answer:
To handle errors and prevent the program from crashing -> Option BQuick Check:
Try-except handles errors = B [OK]
- Thinking try-except speeds up code
- Confusing try-except with loops
- Using try-except to define functions
Solution
Step 1: Identify correct try-except syntax
Python usestry:followed byexcept ExceptionType:to catch errors.Step 2: Check each option for syntax errors
try: x = 1/0 except ZeroDivisionError: print('Cannot divide by zero') uses correctexcept ZeroDivisionError:syntax; others use invalid keywords likecatchor incorrect formatting.Final Answer:
try: x = 1/0 except ZeroDivisionError: print('Cannot divide by zero') -> Option AQuick Check:
Correct except syntax = A [OK]
- Using 'catch' instead of 'except'
- Adding 'then' after except
- Misplacing 'finally' keyword
try:
print('Start')
x = 5 / 0
print('End')
except ZeroDivisionError:
print('Error caught')
print('Done')Solution
Step 1: Trace code inside try block
It prints 'Start', then tries to divide 5 by 0, which raises ZeroDivisionError before printing 'End'.Step 2: Handle exception and continue
The except block catches the error and prints 'Error caught'. After that, the program continues and prints 'Done'.Final Answer:
Start Error caught Done -> Option DQuick Check:
Exception stops try block, except runs = C [OK]
- Assuming 'End' prints after error
- Missing that except block runs
- Thinking program stops after error
try:
print('Hello')
except ValueError
print('Value error occurred')Solution
Step 1: Check syntax of except statement
The except line must end with a colon ':' to define the block.Step 2: Identify missing colon
In the code,except ValueErroris missing the colon, causing a syntax error.Final Answer:
Missing colon ':' after except ValueError -> Option CQuick Check:
except line needs ':' = A [OK]
- Forgetting colon after except
- Adding parentheses after except
- Misordering try and except blocks
Solution
Step 1: Understand try-except-else structure
Thetryblock attempts conversion;excepthandles errors;elseruns if no error occurs.Step 2: Check which option prints 'Invalid input' on error and shows input if valid
try: num = int(input('Enter number: ')) except ValueError: print('Invalid input') else: print('Input is', num) correctly prints 'Invalid input' on ValueError and prints the number if conversion succeeds.Final Answer:
try: num = int(input('Enter number: ')) except ValueError: print('Invalid input') else: print('Input is', num) -> Option AQuick Check:
Use except for errors, else for success = D [OK]
- Not using else to handle successful input
- Catching all exceptions without specifying
- Missing error handling causing crash
