Tác giả: Dương Nguyễn Phú Cường Show Ngày đăng: Hồi xưa đó What is an Exception?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. Why handle exception?
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;
Error handling examplesLet’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”.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,
Difference between Errors and Exception
The table below shows the exception object methods
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 exceptionsMultiple ExceptionsMultiple 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 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); ?> Testing the codeWe 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?Summary
|