Bird
Raised Fist0
PHPprogramming~5 mins

Custom exception classes in PHP

Choose your learning style10 modes available
Introduction

Custom exception classes help you create your own error types. This makes it easier to find and fix specific problems in your code.

When you want to handle different errors in different ways.
When you want to add extra information to an error.
When you want to group related errors together.
When you want clearer error messages for your users.
When you want to separate your error handling from built-in PHP errors.
Syntax
PHP
<?php
class MyCustomException extends Exception {
    // You can add custom properties or methods here
}

Custom exceptions extend the built-in Exception class.

You can add your own methods or properties to provide more details about the error.

Examples
This creates a simple custom exception named FileNotFoundException.
PHP
<?php
class FileNotFoundException extends Exception {}
This custom exception stores which form field caused the validation error.
PHP
<?php
class ValidationException extends Exception {
    private string $field;

    public function __construct(string $message, string $field) {
        parent::__construct($message);
        $this->field = $field;
    }

    public function getField(): string {
        return $this->field;
    }
}
Sample Program

This program defines a custom exception AgeException. The function checkAge throws this exception if the age is less than 18. The try-catch block catches the custom exception and prints a message.

PHP
<?php
class AgeException extends Exception {}

function checkAge(int $age) {
    if ($age < 18) {
        throw new AgeException("Age must be 18 or older.");
    }
    echo "Age is valid: $age\n";
}

try {
    checkAge(15);
} catch (AgeException $e) {
    echo "Caught custom exception: " . $e->getMessage() . "\n";
}
OutputSuccess
Important Notes

Always extend the built-in Exception class when creating custom exceptions.

Use try-catch blocks to handle your custom exceptions gracefully.

Custom exceptions help keep your error handling organized and clear.

Summary

Custom exceptions let you create specific error types for your code.

They extend the built-in Exception class.

Use them with try-catch to handle errors clearly and safely.

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