Error handling is a simple but essential part of web-based applications. It is considered a dynamic part of the programming language. Without proper error management, applications will appear unprofessional, full of bugs, and may open up unknown security threats. This tutorial explains the concept of error handling in PHP.
What Is Error Handling?
Error handling is a method of capturing an error thrown by a program and applying appropriate action to resolve that error. PHP displays an error message with the file name and line number by default.
There are two popular ways to handle errors in PHP:
- Applying
die()
method - Custom errors handler and error triggers
Applying die()
method
The die() method terminates the execution of the current PHP script and prints a message as output.
Example:
<?php
/* File opening in read mode */
$fp = fopen("example.csv", "r");
?>
The above code is trying to open a file that does not exist. So it will give an error message such as:
( ! ) Warning: fopen(example.csv): failed to open stream: No such file or directory in D:\wamp64\www\test1.php on line 8
If the program requires this file, then without it, further script execution may become unusable, so here there is a need to stop the execution and display a custom error message using the die()
function.
Example:
<?php
/* Check if the file exists */
if(!file_exists("example.csv")) {
die("error: The required file is missing.");
}
/* File opening in read mode */
$fp = fopen("example.csv", "r");
?>
Output:
error: The required file is missing.
Custom Errors Handler Function
In PHP, we can define our custom error handling function, which is straightforward to create. This function requires a minimum of two parameters and supports a maximum of five parameters.
Syntax:
custom_error_function(error_no, error_message, error_file, error_line, error_context)
Parameter Values
Parameter | Description |
---|---|
error_no | It is required and must be a value number. It sets the level of error reporting for a user-defined error. |
error_message | It is required and prints the user-defined error message. |
error_file | It is optional. It specifies the file where an error has occurred. |
error_line | It is optional. It prints the line where an error has occurred. |
error_context | It is optional. When an error occurs, it prints an array containing all the variables with values. |
Set Error Handler
The PHP set_error_handler()
function is a built-in error handler function that sets the error handler function defined by the user.
Syntax:
set_error_handler(errorhandler, E_ALL | E_STRICT)
Parameter Values
Parameter | Description | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
errorhandler | It sets a user error handling function name. | ||||||||||||||||||||||||||
E_ALL|E_STRICT | It specifies at which error report level the error defined by the user will be shown. The default value is E_ALL.
|
Example:
<?php
/* User-defined error handling function */
function customErrorHandlar($errorNo, $errorMessage, $errorFile, $errorLine) {
echo "Error Message: [$errorNo] $errorMessage<br>";
echo "Error on line $errorLine in $errorFile";
}
/* Set Error Handler */
set_error_handler("customErrorHandlar");
echo $hello;
?>
Output:
Error Message: [8] Undefined variable: hello Error on line 10 in D:\wamp64\www\example.php
Exception Handling
Like all other programming languages, PHP also has an exception handling model. There are three keywords related to exception handling in PHP. These are as follows:
Keyword | Description |
---|---|
try | In the "try" block, codes are written in which there may be an exception. If there is no exception, this code execution will continue. Otherwise, it "throws" an exception. |
throw | If an exception is triggered, the control is transferred from the try block to the catch block using the keyword "throw". Each "throw" must have a "catch". |
catch | The catch block catches the exception and creates an object which will hold exception information. |
Example:
<?php
try{
if(!file_exists("example.csv")) {/* Check if the file exists */
throw new Exception("error: The required file is missing.");
}
$fp = fopen("example.csv", "r"); /* Open the file. */
}
catch (Exception $err) {
echo "Caught an exception: ", $err->getMessage();
/* This data can be logged here that the file is not being opened for some reason. */
}
echo "The program execution continues."
?>
Since the file does not exist, it will throw an exception, and further programs will execute without dependency on the file.
Output:
Caught an exception: error: The required file is missing. The program execution continues.
Following are some of the functions that can be used:
- getMessage() − Prints exception message.
- getCode() −Prints exception code.
- getFile() − Prints source filename.
- getLine() − Prints source line.
- getTrace() − Prints n-array of the backtrace().
- getTraceAsString() − Prints the formatted string of trace.