Custom exception classes help you create your own error types. This makes it easier to find and fix specific problems in your code.
Custom exception classes in 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.
FileNotFoundException.<?php class FileNotFoundException extends Exception {}
<?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; } }
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 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"; }
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.
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
What is the main purpose of creating a custom exception class in PHP?
Solution
Step 1: Understand the role of custom exceptions
Custom exceptions allow programmers to create specific error types that represent particular problems in the code.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.Final Answer:
To define specific error types for clearer error handling -> Option AQuick Check:
Custom exceptions = Specific error types [OK]
- Thinking custom exceptions replace built-in Exception
- Believing custom exceptions fix errors automatically
- Assuming custom exceptions improve performance
Which of the following is the correct way to declare a custom exception class named MyError in PHP?
?Solution
Step 1: Recall PHP syntax for custom exceptions
Custom exceptions extend the built-in Exception class using the keywordextends.Step 2: Check each option
class MyError extends Exception {} correctly usesextends Exception. class MyError implements Exception {} wrongly usesimplements, which is for interfaces. class MyError extends Error {} extendsError, which is a different base class. class MyError inherits Exception {} uses invalid syntaxinherits.Final Answer:
class MyError extends Exception {} -> Option CQuick Check:
Custom exception syntax = extends Exception [OK]
- Using 'implements' instead of 'extends'
- Using 'inherits' keyword which is invalid
- Extending Error instead of Exception
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";
}Solution
Step 1: Understand the thrown exception type
The code throws an exception of typeMyException.Step 2: Check catch blocks order and matching
The first catch block matchesMyException, so it catches the exception and echoes the message.Final Answer:
Custom error happened -> Option AQuick Check:
Matching catch block runs = Custom message [OK]
- Expecting general catch to run first
- Thinking exception is uncaught
- Ignoring exception message
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";
}Solution
Step 1: Analyze catch block order
The first catch block catches all Exception types, including MyException, so the second catch block is unreachable.Step 2: Correct catch order
Specific exceptions like MyException must be caught before the general Exception to avoid unreachable code.Final Answer:
The catch blocks are in wrong order; specific should come before general -> Option BQuick Check:
Specific catch before general catch [OK]
- Placing general catch before specific catch
- Thinking implements is needed for exceptions
- Misunderstanding throw syntax
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";
}Solution
Step 1: Understand the custom method in exception
The classValidationExceptionadds a methodgetCustomMessage()that returns a formatted message.Step 2: Check which catch block runs and output
The thrown exception isValidationException, so the first catch block runs and echoes the custom message.Final Answer:
Validation failed: Invalid input -> Option DQuick Check:
Custom method called on caught exception [OK]
- Expecting default getMessage() output only
- Thinking general catch block runs first
- Assuming method does not exist
Ready to prove it?
Pass the test and this pattern moves unknown
