PHP Error Handling experience sharing

Source: Internet
Author: User
Tags php error
This tutorial introduces some of the most important error detection methods in PHP.

We'll explain the different ways to handle the error:

Simple "die ()" statement
Custom errors and error triggers
Error Reporting
Basic error handling: Using the Die () function
The first example shows a simple script that opens a text file:
Copy the code code as follows:
<?php
$file =fopen ("Welcome.txt", "R");
?>

If the file does not exist, you will get an error like this:

Warning:fopen (Welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in C:\webfolder\test.php on line 2 to prevent users from getting a similar error message, we detect if the file exists before accessing the file:
Copy the code code as follows:
<?php
if (!file_exists ("Welcome.txt"))
{
Die ("File not Found");
}
Else
{
$file =fopen ("Welcome.txt", "R");
}
?>

Now, if the file does not exist, you will get an error message like this:

File not found is more efficient than the previous code because it takes a simple error handling mechanism to terminate the script after the error.

However, simply terminating the script is not always the proper way. Let's look at the alternative PHP functions for handling errors.
Create a custom error handler
Creating a custom error handler is straightforward. We have simply created a special function that can be called when an error occurs in PHP.

The function must be capable of handling at least two parameters (Error level and error message), but can accept up to five parameters (optional: File, Line-number, and error context):

Grammar
Error_function (Error_level,error_message,
Error_file,error_line,error_context)

Error Reporting level

These error reporting levels are different types of errors that the error handler is designed to handle:

Now, let's create a function that handles the error:
Copy the code code as follows:
function Customerror ($errno, $ERRSTR)
{
echo "<b>Error:</b> [$errno] $errstr <br/>";
echo "Ending Script";
Die ();
}

The above code is a simple error-handling function. When it is triggered, it gets the error level and error message. It then outputs the error level and message, and terminates the script.

Now that we have created an error handler, we need to determine when the function is fired.
Set Error Handler
The default error handler for PHP is the built-in error handler. We are going to transform the above function into the default error handler during the script run.

You can modify the error handler so that it applies only to certain errors, so that the script can handle different errors in different ways. However, in this case, we intend to use our custom error handlers for all errors:

Set_error_handler ("Customerror"); Since we want our custom function to handle all errors, Set_error_handler () requires only one parameter, and you can add a second parameter to specify the error level.

Instance
Test the error handler by trying to output a variable that does not exist:
Copy the code code as follows:
<?php
Error handler function
function Customerror ($errno, $ERRSTR)
{
echo "<b>Error:</b> [$errno] $errstr";
}

Set Error Handler
Set_error_handler ("Customerror");

Trigger Error
Echo ($test);
?>

The output of the above code should look like this:

Error: [8] Undefined Variable:test trigger Error
The location of the user input data in the script is useful for triggering errors when the user's input is not valid. In PHP, this task is done by Trigger_error ().

Example
In this example, if the "test" variable is greater than "1", an error occurs:
Copy the code code as follows:
<?php
$test = 2;
if ($test >1)
{
Trigger_error ("Value must be 1 or below");
}
?>

The output of the above code should look like this:

Notice:value must be 1 or below
In C:\webfolder\test.php on line 6 You can trigger an error anywhere in the script, and by adding the second parameter, you can specify the level of error that is triggered.

Possible types of errors:
E_user_error-Fatal user generated run-time error. The error cannot be recovered. The execution of the script was interrupted.
E_user_warning-A non-fatal user-generated run-time warning. Script execution is not interrupted.
E_user_notice-Default. User-generated Run-time notifications. The script found a possible error, or it might occur when the script is running normally.
Example
In this example, if the "test" variable is greater than "1", a e_user_warning error occurs. If e_user_warning occurs, we will use our custom error handler and end the script:
Copy the code code as follows:
<?php
Error handler function
function Customerror ($errno, $ERRSTR)
{
echo "<b>Error:</b> [$errno] $errstr <br/>";
echo "Ending Script";
Die ();
}

Set Error Handler
Set_error_handler ("Customerror", e_user_warning);

Trigger Error
$test = 2;
if ($test >1)
{
Trigger_error ("Value must be 1 or below", e_user_warning);
}
?>

The output of the above code should look like this:

Error: [+] Value must be 1 or below
Ending script Now that we've learned how to create our own error, and how to punish them, let's look at the error record.
Error logging
By default, PHP sends error records to the server's error logging system or file, based on the Error_log configuration in php.ini. By using the Error_log () function, you can send an error record to a specified file or remote destination.

Sending an error message to yourself via e-mail is a good way to get notification of a specified error.

Send error message via e-mail
In the following example, if a specific error occurs, we will send an e-mail with an error message and end the script:
Copy the code code as follows:
<?php
Error handler function
function Customerror ($errno, $ERRSTR)
{
echo "<b>Error:</b> [$errno] $errstr <br/>";
echo "Webmaster has been notified";
Error_log ("Error: [$errno] $errstr", 1,
"someone@example.com", "from:webmaster@example.com");
}
Set Error Handler
Set_error_handler ("Customerror", e_user_warning);

Trigger Error
$test = 2;
if ($test >1)
{
Trigger_error ("Value must be 1 or below", e_user_warning);
}
?>

The output of the above code should look like this:

Error: [+] Value must be 1 or below
Webmaster has been notified receive messages from the above code like this:

Error: [1] Value must be or below this method is not suitable for all errors. General errors should be logged on the server by using the default PHP record system.

Error backtracking


Definition and usage
The PHP debug_backtrace () function generates a backtrace.

The function returns an associative array. The following are the elements that might be returned:

Grammar
Debug_backtrace () example
Copy the code code as follows:
<?php
function One ($str 1, $str 2)
{
("Glenn", "quagmire");
}
function ($str 1, $str 2)
{
Three ("Cleveland", "Brown");
}
Function three ($str 1, $str 2)
{
Print_r (Debug_backtrace ());
}

One ("Peter", "Griffin");
?>

Output:

Array
(
[0] = = Array
(
[File] = C:\webfolder\test.php
[Line] = 7
[Function] = three
[Args] = Array
(
[0] = Cleveland
[1] = Brown
)
)
[1] = = Array
(
[File] = C:\webfolder\test.php
[Line] = 3
[Function] =
[Args] = Array
(
[0] = Glenn
[1] = Quagmire
)
)
[2] = = Array
(
[File] = C:\webfolder\test.php
[Line] = 14
[Function] = one
[Args] = Array
(
[0] = Peter
[1] = Griffin
)
)
)

  • Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.