If you are a PHP veteran, of course you know what happens when a PHP script fails. At this point the PHP parser will give an error message on the screen, such as Fatal error: Call to undefined function on line 19 --, so the program terminates here. This information will scare the customer, who may immediately call you for a consultation.
Fortunately, there is a solution. PHP has built-in tools that allow developers to catch script errors and then forward them to a custom error handler. At this point, the processor can be programmed to display more specific information about the error. (Recommended learning: PHP programming from entry to proficiency)
You can also write errors to files or databases to take remedial measures. It is sometimes possible to program the processor to ignore error messages.
In this article, I will explain how to use PHP's error handling API to build a user-defined error handler, and explain how to display and manage script error information in a simple and friendly way.
Error Types and Reporting Levels
Let’s start with the basics. PHP has three most basic error types, from low-level to high-level: attention, warning and error (or fatal error). Normally, cautions and warnings do not terminate the program; but fatal errors are dangerous failures (for example, calling an undefined function or referencing a non-existent object) that will cause the program to interrupt. These errors may occur during startup, parsing, compilation, or runtime.
Keywords such as E_NOTICE, E_ERROR, etc. are used to indicate different types and levels of errors. A detailed list of them can be found in the PHP manual.
Error display in the script stage is controlled by the error_reporting() function. This function sets different parameters for different error levels. Table A shows a script that uses this function to report warnings and fatal errors.
Table A
<?php // display warnings and errors error_reporting(E_WARNING | E_ERROR); // this will generate a notice, which will never be displayed echo $undefinedVar; // this will generate a fatal error, which will be displayed callUndefFunc(); ?>
Comparing the code in Table B with the above, it is found that error information and even fatal information are hidden in Listing B, so that the error information will not be displayed.
Table B
<?php // turn off error display // no errors will be displayed error_reporting(0); // this will generate a notice echo $undefinedVar; // this will generate a fatal error callUndefFunc(); ?>
The code in Table C displays all error messages and even simple precautions:
Table C
<?php // all errors will be displayed error_reporting(E_ALL); // this will generate a notice echo $undefinedVar; // this will generate a fatal error callUndefFunc(); ?>
Like the above 3 As shown in the example, the error_reporting() function is very important in controlling what is displayed on the screen when an error occurs. The key word here is displayed, which means that the error is not displayed rather than that the error does not occur. Therefore, when a fatal error occurs (such as an incorrect function call), the program is terminated; however, no message is displayed to the user at this time.
The above is the detailed content of php custom error handler. For more information, please follow other related articles on the PHP Chinese website!