📖 Scenario: Imagine you are building a PHP script that needs to handle errors in a custom way. Instead of PHP showing default error messages, you want to catch errors and display a friendly message or log them differently.
🎯 Goal: You will create a custom error handler function and use set_error_handler to tell PHP to use your function when an error happens.
📋 What You'll Learn
Create a custom error handler function named myErrorHandler that accepts the standard error parameters.
Use set_error_handler to set myErrorHandler as the active error handler.
Trigger a warning error using trigger_error to test the custom handler.
Print the custom error message from inside the error handler.
💡 Why This Matters
🌍 Real World
Custom error handlers help websites and applications show friendly messages or log errors in a controlled way instead of default PHP errors.
💼 Career
Knowing how to manage errors is important for PHP developers to build robust, user-friendly applications and maintain code quality.
Progress0 / 4 steps
1
Create the custom error handler function
Write a function called myErrorHandler that accepts four parameters: $errno, $errstr, $errfile, and $errline. Inside the function, use echo to print the string: "Custom error: " followed by the error message $errstr and a newline character.
PHP
Hint
Define a function named myErrorHandler with the four error parameters. Use echo to print the message.
2
Set the custom error handler
Use set_error_handler to set myErrorHandler as the active error handler.
PHP
Hint
Call set_error_handler with the string 'myErrorHandler' as argument.
3
Trigger a warning error
Use trigger_error to trigger a user warning with the message 'This is a test warning.'.
PHP
Hint
Call trigger_error with the message and E_USER_WARNING as parameters.
4
Print the custom error message
Run the script and observe that the output shows the custom error message starting with Custom error: This is a test warning.
PHP
Hint
Run the PHP script. The output should show the custom error message.
Practice
(1/5)
1. What is the main purpose of the set_error_handler function in PHP?
easy
A. To define a custom function to handle errors when they occur
B. To stop all errors from appearing
C. To automatically fix errors in the code
D. To log errors to a file without any custom handling
Solution
Step 1: Understand what set_error_handler does
This function lets you tell PHP to use your own function to handle errors instead of the default error messages.
Step 2: Compare options with this understanding
Only defining a custom function to handle errors when they occur correctly describes this behavior. Automatically fixing errors, stopping all errors from appearing, and logging errors to a file without any custom handling are all incorrect.
Final Answer:
To define a custom function to handle errors when they occur -> Option A
Quick Check:
Custom error handling = Define function with set_error_handler [OK]
Hint: Remember: set_error_handler sets your own error function [OK]
Common Mistakes:
Thinking it stops errors completely
Assuming it fixes errors automatically
Confusing it with error logging functions
2. Which of the following is the correct syntax to set a custom error handler function named myErrorHandler?
easy
A. set_error_handler(&myErrorHandler);
B. set_error_handler(myErrorHandler);
C. set_error_handler('myErrorHandler');
D. set_error_handler($myErrorHandler);
Solution
Step 1: Recall the syntax for passing function names in PHP
When passing a function name as a callback, it must be a string in quotes.
Step 2: Check each option
set_error_handler('myErrorHandler'); correctly passes the function name as a string. set_error_handler(myErrorHandler); misses quotes, set_error_handler(&myErrorHandler); uses an invalid reference operator, and set_error_handler($myErrorHandler); uses a variable which is incorrect here.
Final Answer:
set_error_handler('myErrorHandler'); -> Option C
Quick Check:
Function name as string = 'myErrorHandler' [OK]
Hint: Function names as strings in callbacks [OK]
Common Mistakes:
Omitting quotes around function name
Using variable instead of string
Using reference operator & incorrectly
3. What will be the output of the following PHP code?
function customError($errno, $errstr) {
echo "Error: [$errno] $errstr";
}
set_error_handler('customError');
trigger_error('This is a test error', E_USER_WARNING);
medium
A. Warning: This is a test error
B. Error: [512] This is a test error
C. Fatal error: Uncaught Error
D. No output
Solution
Step 1: Understand the custom error handler and trigger_error
The customError function prints the error number and message. The trigger_error calls this handler with E_USER_WARNING which has error number 512.
Step 2: Predict the output
The output will be the echo from customError showing the error number and message exactly as coded.
Final Answer:
Error: [512] This is a test error -> Option B
Quick Check:
Custom handler prints error number 512 and message [OK]
Hint: E_USER_WARNING error number is 512 [OK]
Common Mistakes:
Expecting default PHP warning format
Confusing error numbers
Thinking no output appears
4. Identify the error in this PHP code snippet using set_error_handler:
function handler($errno, $errstr) {
echo "Error: $errstr";
}
set_error_handler(handler);
trigger_error('Oops!');
medium
A. trigger_error requires two arguments
B. trigger_error cannot be used with set_error_handler
C. handler function must return a value
D. Missing quotes around handler in set_error_handler
Solution
Step 1: Check the set_error_handler syntax
The function name passed to set_error_handler must be a string, so it needs quotes.
Step 2: Verify trigger_error usage
trigger_error can be called with one argument; the second is optional. The handler function does not need to return a value. Using trigger_error with set_error_handler is valid.
Final Answer:
Missing quotes around handler in set_error_handler -> Option D
Quick Check:
Function name must be string in quotes [OK]
Hint: Function names need quotes in set_error_handler [OK]
Common Mistakes:
Omitting quotes around function name
Thinking trigger_error needs two arguments
Expecting handler to return a value
5. You want to log all warnings and notices to a file instead of displaying them. Which approach using set_error_handler is best?
hard
A. Create a function that writes error details to a log file and set it with set_error_handler
B. Use set_error_handler with an empty function to ignore errors
C. Call trigger_error inside set_error_handler to log errors
D. Disable error reporting and rely on PHP default logging
Solution
Step 1: Understand the goal
You want to capture warnings and notices and save them to a file instead of showing them on screen.
Step 2: Evaluate options
Create a function that writes error details to a log file and set it with set_error_handler correctly describes creating a custom function that writes error info to a log file and setting it as the error handler. Use set_error_handler with an empty function to ignore errors ignores errors, which is not logging. Call trigger_error inside set_error_handler to log errors misuses trigger_error inside the handler, causing recursion. Disable error reporting and rely on PHP default logging disables reporting but does not customize logging.
Final Answer:
Create a function that writes error details to a log file and set it with set_error_handler -> Option A
Quick Check:
Custom handler writes logs = best practice [OK]
Hint: Custom handler writes logs to file for error control [OK]