Bird
Raised Fist0
Pythonprogramming~10 mins

Try–except–else behavior in Python - 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–except–else behavior
Start try block
Code runs without error?
NoGo to except block
Handle exception
Run else block
Continue after try-except-else
The program tries code in try block; if no error, else runs; if error, except runs.
Execution Sample
Python
try:
    x = 10 / 2
except ZeroDivisionError:
    print("Error")
else:
    print("No error, result is", x)
This code divides 10 by 2, no error occurs, so else block prints the result.
Execution Table
StepActionEvaluationResult
1Enter try blockx = 10 / 2x = 5.0
2Check for errorNo errorProceed to else
3Run else blockprint("No error, result is", x)Output: No error, result is 5.0
4Exit try-except-elseEnd of blocksProgram continues normally
💡 No exception raised, so except block skipped; else block executed.
Variable Tracker
VariableStartAfter Step 1After Step 4
xundefined5.05.0
Key Moments - 2 Insights
Why does the else block run only if no exception occurs?
Because the else block is designed to run only when the try block finishes without errors, as shown in execution_table step 2 and 3.
What happens if an exception occurs in the try block?
The program jumps to the except block to handle the error and skips the else block, which is shown by the flow in concept_flow.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of x after step 1?
A10
Bundefined
C5.0
DZeroDivisionError
💡 Hint
Check the 'Result' column in row for step 1 in execution_table.
At which step does the else block run?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look at the 'Action' column in execution_table where else block is executed.
If a ZeroDivisionError occurred, which block would run instead of else?
Aexcept block
Belse block
Ctry block
Dfinally block
💡 Hint
Refer to concept_flow where error leads to except block.
Concept Snapshot
try:
  # code that might fail
except ErrorType:
  # handle error
else:
  # runs only if no error

Use else to run code only when try succeeds.
Full Transcript
This visual shows how Python's try-except-else works. First, the program runs code inside try. If no error happens, it runs the else block next. If an error occurs, it skips else and runs except block to handle it. Variables like x change only if try code runs without error. This helps keep error handling clear and separate from normal code.

Practice

(1/5)
1. What does the else block do in a try-except-else structure?
easy
A. Runs only if no error occurs in the try block
B. Runs only if an error occurs in the try block
C. Always runs regardless of errors
D. Runs before the try block

Solution

  1. Step 1: Understand try-except-else flow

    The try block runs code that might cause an error. If an error happens, the except block runs.
  2. Step 2: Role of else block

    The else block runs only if no error occurs in the try block, meaning the code succeeded without exceptions.
  3. Final Answer:

    Runs only if no error occurs in the try block -> Option A
  4. Quick Check:

    else runs if no error = A [OK]
Hint: Else runs only when try succeeds without errors [OK]
Common Mistakes:
  • Thinking else runs after except
  • Assuming else runs always
  • Confusing else with finally
2. Which of the following is the correct syntax for a try-except-else block in Python?
easy
A. try: pass finally: pass else: pass
B. try: pass else: pass except: pass
C. try: pass except: pass else: pass
D. except: pass try: pass else: pass

Solution

  1. Step 1: Recall correct order of blocks

    The correct order is try, then except, then else. The else block must come after except.
  2. Step 2: Check each option

    try: pass except: pass else: pass follows the correct order and syntax. Options A, B, and D have wrong order or misplaced blocks.
  3. Final Answer:

    try: pass except: pass else: pass -> Option C
  4. Quick Check:

    try-except-else order = C [OK]
Hint: Remember order: try, except, else [OK]
Common Mistakes:
  • Placing else before except
  • Using else after finally
  • Starting with except block
3. What will be the output of the following code?
try:
    print("Start")
    x = 1 / 1
except ZeroDivisionError:
    print("Error")
else:
    print("No Error")
print("End")
medium
A. Start\nNo Error\nEnd
B. Start\nEnd
C. Error\nNo Error\nEnd
D. Start\nError\nEnd

Solution

  1. Step 1: Analyze try block execution

    The code prints "Start" and calculates 1/1 which is 1, no error occurs.
  2. Step 2: Determine which blocks run

    Since no error, except block is skipped, else block runs printing "No Error", then "End" prints after.
  3. Final Answer:

    Start No Error End -> Option A
  4. Quick Check:

    No error means else runs = D [OK]
Hint: If no error, else runs after try [OK]
Common Mistakes:
  • Thinking except runs without error
  • Ignoring else block output
  • Missing that print("End") always runs
4. Identify the error in this code snippet:
try:
    print(10 / 0)
else:
    print("No error")
except ZeroDivisionError:
    print("Error occurred")
medium
A. Syntax is correct
B. except block is missing
C. try block is empty
D. else block is before except block

Solution

  1. Step 1: Check block order in try-except-else

    The correct order is try, except, then else. Here, else comes before except which is invalid syntax.
  2. Step 2: Confirm syntax error

    Python raises a syntax error because else must follow except, not precede it.
  3. Final Answer:

    else block is before except block -> Option D
  4. Quick Check:

    else must come after except = A [OK]
Hint: Else must follow except, not before [OK]
Common Mistakes:
  • Placing else before except
  • Forgetting except block
  • Misordering try-except-else blocks
5. Consider this code:
def check_value(val):
    try:
        result = 10 / val
    except ZeroDivisionError:
        return "Cannot divide by zero"
    else:
        return f"Result is {result}"

print(check_value(0))
print(check_value(5))
What is the output?
hard
A. Result is 0.0\nCannot divide by zero
B. Cannot divide by zero\nResult is 2.0
C. Cannot divide by zero\nResult is 0
D. Error at runtime

Solution

  1. Step 1: Analyze call with 0

    When val=0, division causes ZeroDivisionError, so except block returns "Cannot divide by zero".
  2. Step 2: Analyze call with 5

    When val=5, division succeeds (10/5=2.0), so else block returns "Result is 2.0".
  3. Final Answer:

    Cannot divide by zero Result is 2.0 -> Option B
  4. Quick Check:

    ZeroDivision triggers except, else runs if no error = B [OK]
Hint: Except returns on error; else returns on success [OK]
Common Mistakes:
  • Assuming else runs even if error occurs
  • Confusing output order
  • Expecting runtime error instead of handled exception