Bird
Raised Fist0
PHPprogramming~10 mins

Custom exception classes in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Custom exception classes
Start
↓
Define custom exception class
↓
Try block: code runs
↓
Exception thrown?
No→Continue normal flow
Yes↓
Catch block: catch custom exception
↓
Handle exception
↓
End
This flow shows how a custom exception class is defined, then used in a try block, caught, and handled.
Execution Sample
PHP
<?php
class MyException extends Exception {}

try {
  throw new MyException("Oops!");
} catch (MyException $e) {
  echo $e->getMessage();
}
This code defines a custom exception, throws it, catches it, and prints its message.
Execution Table
StepActionEvaluationResult
1Define class MyException extending ExceptionClass createdMyException ready
2Enter try blockNo exception yetRunning code inside try
3Throw new MyException with message 'Oops!'Exception thrownMyException object created
4Catch block matches MyExceptionCatch block enteredException caught
5Call getMessage() on exceptionReturns 'Oops!'Output: Oops!
6End of scriptNo more codeScript ends
💡 Exception thrown and caught, script ends normally
Variable Tracker
VariableStartAfter Step 3After Step 4Final
$eundefinedMyException object with message 'Oops!'Same object in catchSame object
Key Moments - 3 Insights
Why do we extend Exception to create a custom exception?
Extending Exception lets us create a new type of error that can be caught separately, as shown in step 1 and step 4 of the execution_table.
What happens if we throw an exception but don't catch it?
If not caught, the script stops with an error. Here, step 4 shows catching prevents that and allows handling.
How do we get the message from the exception?
We call getMessage() on the exception object, as shown in step 5 of the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output at step 5?
AOops!
BMyException
CNo output
DError message
💡 Hint
Check the 'Result' column at step 5 in execution_table
At which step does the exception get caught?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look for 'Catch block entered' in the 'Evaluation' column
If we remove the catch block, what happens to the script?
AIt runs normally without output
BIt throws an uncaught exception error
CIt prints 'Oops!' automatically
DIt ignores the exception
💡 Hint
Refer to key_moments about what happens if exception is not caught
Concept Snapshot
Custom exception classes in PHP:
- Define by extending Exception class
- Use try block to run code
- Throw custom exception with throw
- Catch with catch (CustomException $e)
- Access message with getMessage()
Full Transcript
This example shows how to create a custom exception class in PHP by extending the built-in Exception class. The code runs inside a try block where it throws the custom exception. The catch block catches this specific exception type and handles it by printing the message. The execution table traces each step: defining the class, entering try, throwing exception, catching it, printing message, and ending the script. Variables track the exception object as it is created and caught. Key moments clarify why extending Exception is needed, what happens if exceptions are not caught, and how to get the message. The quiz tests understanding of output, catching step, and behavior without catch. The snapshot summarizes the syntax and flow for quick reference.

Practice

(1/5)
1.

What is the main purpose of creating a custom exception class in PHP?

easy
A. To define specific error types for clearer error handling
B. To replace the built-in Exception class completely
C. To speed up the execution of the program
D. To automatically fix errors in the code

Solution

  1. Step 1: Understand the role of custom exceptions

    Custom exceptions allow programmers to create specific error types that represent particular problems in the code.
  2. Step 2: Compare with other options

    Custom exceptions do not replace the built-in Exception class, nor do they speed up execution or fix errors automatically.
  3. Final Answer:

    To define specific error types for clearer error handling -> Option A
  4. Quick Check:

    Custom exceptions = Specific error types [OK]
Hint: Custom exceptions clarify errors by type, not fix or speed [OK]
Common Mistakes:
  • Thinking custom exceptions replace built-in Exception
  • Believing custom exceptions fix errors automatically
  • Assuming custom exceptions improve performance
2.

Which of the following is the correct way to declare a custom exception class named MyError in PHP?

?
easy
A. class MyError extends Error {}
B. class MyError implements Exception {}
C. class MyError extends Exception {}
D. class MyError inherits Exception {}

Solution

  1. Step 1: Recall PHP syntax for custom exceptions

    Custom exceptions extend the built-in Exception class using the keyword extends.
  2. Step 2: Check each option

    class MyError extends Exception {} correctly uses extends Exception. class MyError implements Exception {} wrongly uses implements, which is for interfaces. class MyError extends Error {} extends Error, which is a different base class. class MyError inherits Exception {} uses invalid syntax inherits.
  3. Final Answer:

    class MyError extends Exception {} -> Option C
  4. Quick Check:

    Custom exception syntax = extends Exception [OK]
Hint: Use 'extends Exception' to create custom exceptions [OK]
Common Mistakes:
  • Using 'implements' instead of 'extends'
  • Using 'inherits' keyword which is invalid
  • Extending Error instead of Exception
3.

What will be the output of the following PHP code?

class MyException extends Exception {}

try {
    throw new MyException("Custom error happened");
} catch (MyException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo "General error";
}
medium
A. Custom error happened
B. General error
C. Fatal error: Uncaught exception
D. No output

Solution

  1. Step 1: Understand the thrown exception type

    The code throws an exception of type MyException.
  2. Step 2: Check catch blocks order and matching

    The first catch block matches MyException, so it catches the exception and echoes the message.
  3. Final Answer:

    Custom error happened -> Option A
  4. Quick Check:

    Matching catch block runs = Custom message [OK]
Hint: Catch specific exceptions before general ones [OK]
Common Mistakes:
  • Expecting general catch to run first
  • Thinking exception is uncaught
  • Ignoring exception message
4.

Identify the error in this PHP code that defines and uses a custom exception:

class MyException extends Exception {}

try {
    throw new MyException("Error!");
} catch (Exception $e) {
    echo $e->getMessage();
} catch (MyException $e) {
    echo "Caught MyException";
}
medium
A. No error; code runs fine
B. The catch blocks are in wrong order; specific should come before general
C. The throw statement syntax is incorrect
D. The class should implement Exception interface

Solution

  1. Step 1: Analyze catch block order

    The first catch block catches all Exception types, including MyException, so the second catch block is unreachable.
  2. Step 2: Correct catch order

    Specific exceptions like MyException must be caught before the general Exception to avoid unreachable code.
  3. Final Answer:

    The catch blocks are in wrong order; specific should come before general -> Option B
  4. Quick Check:

    Specific catch before general catch [OK]
Hint: Catch specific exceptions before general ones to avoid unreachable code [OK]
Common Mistakes:
  • Placing general catch before specific catch
  • Thinking implements is needed for exceptions
  • Misunderstanding throw syntax
5.

Given this custom exception class and code, what will be the output?

class ValidationException extends Exception {
    public function getCustomMessage() {
        return "Validation failed: " . $this->getMessage();
    }
}

try {
    throw new ValidationException("Invalid input");
} catch (ValidationException $e) {
    echo $e->getCustomMessage();
} catch (Exception $e) {
    echo "General error";
}
hard
A. Fatal error: Call to undefined method
B. Invalid input
C. General error
D. Validation failed: Invalid input

Solution

  1. Step 1: Understand the custom method in exception

    The class ValidationException adds a method getCustomMessage() that returns a formatted message.
  2. Step 2: Check which catch block runs and output

    The thrown exception is ValidationException, so the first catch block runs and echoes the custom message.
  3. Final Answer:

    Validation failed: Invalid input -> Option D
  4. Quick Check:

    Custom method called on caught exception [OK]
Hint: Call custom methods on caught custom exceptions [OK]
Common Mistakes:
  • Expecting default getMessage() output only
  • Thinking general catch block runs first
  • Assuming method does not exist
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