Bird
Raised Fist0
PHPprogramming~10 mins

Try-catch execution flow in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Try-catch execution flow
Start
↓
Try block
↓
Exception?
No→Continue after try
Yes↓
Catch block
↓
Continue after catch
↓
End
The program tries to run code inside the try block. If an error happens, it jumps to the catch block. Then it continues after the catch.
Execution Sample
PHP
<?php
try {
  echo "Start\n";
  throw new Exception("Error happened");
  echo "End\n";
} catch (Exception $e) {
  echo "Caught: " . $e->getMessage() . "\n";
}
?>
This code prints 'Start', then throws an error, jumps to catch, and prints the error message.
Execution Table
StepActionEvaluationOutput
1Enter try blockNo exception yetStart
2Throw ExceptionException thrown
3Jump to catch blockCatch ExceptionCaught: Error happened
4End programNo more code
💡 Exception thrown at step 2, caught at step 3, program ends normally
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
$e (Exception)nullnullException object createdException object caughtException object caught
Key Moments - 2 Insights
Why does the code after 'throw' inside try not run?
Because at step 2 in the execution_table, the exception is thrown immediately, so the program jumps to the catch block and skips the remaining try code.
What happens if no exception is thrown in try?
The program runs all try code and skips the catch block, continuing after try normally, as shown by the 'No exception yet' evaluation in step 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is printed at step 1?
ACaught: Error happened
BStart
CEnd
DNothing
💡 Hint
Check the Output column at step 1 in execution_table
At which step does the program jump to the catch block?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the Action and Evaluation columns in execution_table rows
If the 'throw' line is removed, what changes in the execution_table?
AStep 2 will not throw exception and step 3 catch block will be skipped
BStep 3 will still run catch block
COutput at step 1 changes
DProgram will crash
💡 Hint
Refer to key_moments about what happens if no exception is thrown
Concept Snapshot
try {
  // code that might fail
} catch (Exception $e) {
  // code to handle error
}

- Code in try runs first
- If error (exception) happens, jump to catch
- Catch gets error info in $e
- After catch, program continues normally
Full Transcript
This example shows how PHP handles errors using try and catch. The program starts by running code inside the try block. When it reaches the throw statement, it creates an error and immediately stops running the try block. Instead, it jumps to the catch block where the error is caught and handled. The catch block prints the error message. After that, the program continues normally. If no error happens, the catch block is skipped. This flow helps programs handle problems without crashing.

Practice

(1/5)
1.

What is the main purpose of a try-catch block in PHP?

easy
A. To handle errors without stopping the program
B. To speed up the execution of the program
C. To create new variables automatically
D. To print output to the screen

Solution

  1. Step 1: Understand the role of try-catch

    The try block contains code that might cause an error, and the catch block handles that error.
  2. Step 2: Identify the purpose

    This structure prevents the program from stopping abruptly by managing errors gracefully.
  3. Final Answer:

    To handle errors without stopping the program -> Option A
  4. Quick Check:

    Try-catch = error handling [OK]
Hint: Try-catch is for error handling, not speed or output [OK]
Common Mistakes:
  • Thinking try-catch speeds up code
  • Confusing try-catch with output commands
  • Believing try-catch creates variables
2.

Which of the following is the correct syntax to start a try-catch block in PHP?

?
easy
A. try() { /* code */ } catch() { /* handle */ }
B. try: /* code */ catch: /* handle */
C. try { /* code */ } catch (Exception $e) { /* handle */ }
D. try[] { /* code */ } catch[] { /* handle */ }

Solution

  1. Step 1: Recall PHP try-catch syntax

    PHP uses curly braces {} to define blocks after try and catch keywords.
  2. Step 2: Match correct syntax

    try { /* code */ } catch (Exception $e) { /* handle */ } correctly uses try { } and catch (Exception $e) { } syntax.
  3. Final Answer:

    try { /* code */ } catch (Exception $e) { /* handle */ } -> Option C
  4. Quick Check:

    Curly braces with try and catch = correct syntax [OK]
Hint: Remember try and catch use curly braces in PHP [OK]
Common Mistakes:
  • Using colons instead of braces
  • Adding parentheses after try or catch
  • Using square brackets instead of braces
3.

What will be the output of this PHP code?

try {
    echo "Start\n";
    throw new Exception("Error happened");
    echo "End\n";
} catch (Exception $e) {
    echo "Caught: " . $e->getMessage() . "\n";
}
echo "Done\n";
medium
A. Start Caught: Error happened Done
B. Start Done
C. Caught: Error happened Done
D. Start End Caught: Error happened Done

Solution

  1. Step 1: Trace code inside try block

    "Start" is printed, then an Exception is thrown, so the next echo "End" is skipped.
  2. Step 2: Catch block runs and prints message

    The catch block prints "Caught: Error happened" and then after try-catch, "Done" is printed.
  3. Final Answer:

    Start Caught: Error happened Done -> Option A
  4. Quick Check:

    Exception stops try, catch prints message, then Done [OK]
Hint: Exception skips rest of try, catch runs, then code continues [OK]
Common Mistakes:
  • Thinking code after throw runs
  • Missing catch block output
  • Assuming program stops after exception
4.

Find the error in this PHP code snippet:

try {
    echo "Hello";
} catch {
    echo "Error caught";
}
medium
A. try block cannot have echo statements
B. Missing exception variable in catch parentheses
C. Missing semicolon after echo statements
D. catch block must come before try block

Solution

  1. Step 1: Check catch block syntax

    In PHP, catch must specify the exception type and variable, like catch (Exception $e).
  2. Step 2: Identify missing part

    The catch block here has no parentheses or variable, causing a syntax error.
  3. Final Answer:

    Missing exception variable in catch parentheses -> Option B
  4. Quick Check:

    Catch needs (Exception $e) [OK]
Hint: Catch always needs (Exception $e) or similar [OK]
Common Mistakes:
  • Omitting exception variable in catch
  • Thinking echo needs semicolon after last statement only
  • Believing catch can come before try
5.

Consider this PHP code:

function divide($a, $b) {
    try {
        if ($b == 0) {
            throw new Exception("Division by zero");
        }
        return $a / $b;
    } catch (Exception $e) {
        return $e->getMessage();
    }
}

echo divide(10, 2) . "\n";
echo divide(5, 0) . "\n";

What will be the output?

hard
A. Error Error
B. 5 0
C. Division by zero Division by zero
D. 5 Division by zero

Solution

  1. Step 1: Analyze divide(10, 2)

    Since 2 is not zero, division happens: 10 / 2 = 5 is returned.
  2. Step 2: Analyze divide(5, 0)

    Since 0 triggers exception, catch returns the message "Division by zero".
  3. Final Answer:

    5 Division by zero -> Option D
  4. Quick Check:

    Valid division returns number; zero divisor returns error message [OK]
Hint: Exception returns message; normal runs return result [OK]
Common Mistakes:
  • Expecting zero instead of error message
  • Thinking exception stops program without catch
  • Confusing return values inside try-catch
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard