Code Explanation:
Function Definition
def safe_gen():
This defines a generator function named safe_gen.
It will yield values one at a time using the yield keyword.
Try Block Starts
try:
Begins a try block to handle exceptions that may occur during the yield statements.
First Yield
yield 1
The first value 1 is yielded successfully.
The generator pauses here and waits for the next iteration.
Second Yield — Division by Zero
yield 2 / 0
When execution resumes, it tries to compute 2 / 0, which raises a ZeroDivisionError.
The error is caught by the except block, and this yield never completes.
Third Yield (Skipped)
yield 3
This line is never executed, because control jumps to the except block once the exception is raised.
Exception Handling
except ZeroDivisionError:
yield "Error caught"
This catches the ZeroDivisionError from 2 / 0.
Instead of crashing, it yields the string "Error caught".
Calling and Printing
print(list(safe_gen()))
This runs the generator and collects all yielded values into a list:
First, 1 is yielded.
Then 2 / 0 causes an exception.
Instead of stopping, "Error caught" is yielded from the except block.
yield 3 is skipped due to the error.
Final Output
[1, 'Error caught']
Download Book - 500 Days Python Coding Challenges with Explanation
.png)

0 Comments:
Post a Comment