PHP
How to Download & Install XAMPP on Windows: PHP Tutorial
What is XAMPP? XAMPP is an open-source, cross-platform web server that consists of a web server,...
An error is an unexpected program result that cannot be handled by the program itself.
Errors are resolved by fixing the program. An example of an error would be an infinite loop that never stops executing.
An exception is unexpected program result that can be handled by the program itself.
Examples of exception include trying to open a file that does not exist.
This exception can be handled by either creating the file or presenting the user with an option of searching for the file.
In this tutorial, you will learn-
When an error occurs, depending on your configuration settings, PHP displays the error message in the web browser with information relating to the error that occurred.
PHP offers a number of ways to handle errors.
We are going to look at three (3) commonly used methods;
Let’s now look at some simple examples with error handling routines.
Let’s suppose that we have developed an application that uses text files to store data. We might want to check for the file’s existence before we attempt to read data from it.
The code below implements the above example.
<?php $denominator = 0; echo 2 / $denominator; ?>
Assuming you saved the file simple_error.php in phptuts folder, open the URL http://localhost/phptuts/simple_error.php
You will get the following results
As you can see from the above results, it makes our application look unprofessional and can be annoying to the user.
We will modify the above code and write an error handler for the application
<?php $denominator = 0; if ($denominator != 0) { echo 2 / $denominator; } else { echo "cannot divide by zero (0)"; } ?>
Assuming you saved the above code as error_handling.php, open the URL http://localhost/phptuts/error_handling.php
Note: it’s a good security practice to display a message as the one shown above instead of showing the message like “File not found”.
Let’s look at another example that uses a custom error handler.
The custom error handler will be set as the default PHP error handling function and will basically display an error number and message.
The code below illustrates the implementation of the above example
<?php function my_error_handler($error_no, $error_msg) { echo "Opps, something went wrong:"; echo "Error number: [$error_no]"; echo "Error Description: [$error_msg]"; } set_error_handler("my_error_handler"); echo (5 / 0); ?>
Open the URL http://localhost/phptuts/custom_error_handler.php you will get the following results
As you can see from the above example, custom error handlers are powerful in the sense that
Let’s now look at the third type of error handling. We will be using the PHP built in function error_reporting function. It has the following basic syntax
<?php error_reporting($reporting_level); ?>
HERE,
Reporting Level | Description | Example |
---|---|---|
E_WARNING | Displays warning messages only. Does not halt the execution of the script | error_reporting(E_WARNING); |
E_NOTICE | Displays notices that can occur during normal execution of a program or could be an error. | error_reporting(E_ NOTICE); |
E_USER_ERROR | Displays user generated errors i.e. custom error handler | error_reporting(E_ USER_ERROR); |
E_USER_WARNING | Displays user generated warning messages | error_reporting(E_USER_WARNING); |
E_USER_NOTICE | Displays user generated notices | error_reporting(E_USER_NOTICE); |
E_RECOVERABLE_ERROR | Displays error that are not fatal and can be handled using custom error handlers | error_reporting(E_RECOVERABLE_ERROR); |
E_ALL | Displays all errors and warnings | error_reporting(E_ ALL); |
Exceptions are handled in an object oriented way.
This means when an exception is thrown; an exception object is created that contains the exception details.
The table below shows the exception object methods
Method | Description | Example |
---|---|---|
getMessage() | Displays the exception’s message | <?php echo $e->getMessage(); ?> |
getCode() | Displays the numeric code that represents the exception | <?php echo $e->getCode(); ?> |
getFile() | Displays the file name and path where the exception occurred | <?php echo $e->getFile(); ?> |
getLine() | Displays the line number where the exception occurred | <?php echo $e->getLine(); ?> |
getTrace() | Displays an array of the backtrace before the exception | <?php print_r( $e->getTrace()); ?> |
getPrevious() | Displays the previous exception before the current one | <?php echo $e->getPrevious(); ?> |
getTraceAsString() | Displays the backtrace of the exception as a string instead of an array | <?php echo $e->getTraceAsString(); ?> |
__toString() | Displays the entire exception as a string | <?php echo $e->__toString(); ?> |
Below is the basic syntax for throwing an exception.
<?php throw new Exception("This is an exception example"); ?>
HERE,
The above code outputs the following message.
We are now going to look at an example that implements the throw and catch exceptions.
We will modify the above example and include the try, throw and catch.
It has the following basic syntax.
<?php try { //code goes here that could potentially throw an exception } catch (Exception $e) { //exception handling code goes here } ?>
HERE,
The code below shows the basic exception example with the try, throw and catch exception implemented.
The program deliberately throws an exception which it then catches.
<?php try { $var_msg = "This is an exception example"; throw new Exception($var_msg); } catch (Exception $e) { echo "Message: " . $e->getMessage(); echo ""; echo "getCode(): " . $e->getCode(); echo ""; echo "__toString(): " . $e->__toString(); } ?>
Open the URL http://localhost/phptuts/exception_handling.php You will get the following results.
It’s also possible to create multiple exceptions for one php try statement depending on the type of exception thrown.
See the article on MySQL, PHP data access… for implementation examples of multiple exceptions
Multiple exception use multiple try catch blocks to handle the thrown exceptions. Multiple exceptions are useful when;
The flowchart below illustrates the how multiple exceptions work
Let’s look at an example that uses multiple exceptions.
We will modify the code that divides a number by the passed in denominator.
We expect two types of exceptions to occur;
For simplicity’s sake, we will only display the exception type in our catch blocks.
The PHP built in Exception class is used to throw exceptions.
We will create two classes that extend the exception class and use them to throw exceptions.
The code below shows the implementation.
<?php class DivideByZeroException extends Exception {}; class DivideByNegativeException extends Exception {}; function process($denominator) { try { if ($denominator == 0) { throw new DivideByZeroException(); } else if ($denominator < 0) { throw new DivideByNegativeException(); } else { echo 25 / $denominator; } } catch (DivideByZeroException $ex) { echo "DIVIDE BY ZERO EXCEPTION!"; } catch (DivideByNegativeException $ex) { echo "DIVIDE BY NEGATIVE NUMBER EXCEPTION!"; } catch (Exception $x) { echo "UNKNOWN EXCEPTION!"; } } process(0); ?>
We will assume you saved multiple_exceptions.php in phptuts folder.
Browse to the URL http://localhost/phptuts/multiple_exceptions.php
Switch back to the PHP file and pass -1 as the parameter as shown in the following diagram.
Browse to the URL http://localhost/phptuts/multiple_exceptions.php.
What results do you get? Pass 3 as the parameter.
What results do you get?
What is XAMPP? XAMPP is an open-source, cross-platform web server that consists of a web server,...
What is Ajax? AJAX full form is Asynchronous JavaScript & XML. It is a technology that reduces the...
PHP is an open-source server-side scripting language that is used to develop static or dynamic web...
Web development is the process of building and maintenance of websites. Web development has a wide...
What is OOPs? Object Oriented is an approach to software development that models application...
What is Regular expression in PHP? PHP Regular Expression also known as regex are powerful pattern...