PHP - Error & Exception Handling
PHP - Error & Exception Handling
Error handling is the process of catching errors raised by your program and then taking
appropriate action. If you would handle errors properly then it may lead to many
unforeseen consequences.
This way you can write an efficient code. Using above technique you can stop your
program whenever it errors out and display more meaningful and user friendly
message.
This function must be able to handle a minimum of two parameters (error level and
error message) but can accept up to five parameters (optionally: file, line-number, and
the error context) −
Syntax
error_function(error_level,error_message,
error_file,error_line,error_context);
Sr.N Parameter & Description
o
1
error_level
Required - Specifies the error report level for the user-defined error. Must be a
value number.
2
error_message
Required - Specifies the error message for the user-defined error
3
error_file
Optional - Specifies the file name in which the error occurred
4
error_line
Optional - Specifies the line number in which the error occurred
5
error_context
Optional - Specifies an array containing every variable and their values in use
when the error occurred
These error report levels are the different types of error the user-defined error handler
can be used for. These values cab used in combination using | operator
1 1
.E_ERROR
Fatal run-time errors. Execution of the script is halted
2 2
E_WARNING
Non-fatal run-time errors. Execution of the script is not halted
3 4
E_PARSE
Compile-time parse errors. Parse errors should only be generated by the
parser.
4 8
E_NOTICE
Run-time notices. The script found something that might be an error, but
could also happen when running a script normally
5 16
E_CORE_ERROR
Fatal errors that occur during PHP's initial start-up.
6 32
E_CORE_WARNING
Non-fatal run-time errors. This occurs during PHP's initial start-up.
7 256
E_USER_ERROR
Fatal user-generated error. This is like an E_ERROR set by the
programmer using the PHP function trigger_error()
8 512
E_USER_WARNING
Non-fatal user-generated warning. This is like an E_WARNING set by the
programmer using the PHP function trigger_error()
9 1024
E_USER_NOTICE
User-generated notice. This is like an E_NOTICE set by the programmer
using the PHP function trigger_error()
10 2048
E_STRICT
Run-time notices. Enable to have PHP suggest changes to your code
which will ensure the best interoperability and forward compatibility of your
code.
11 4096
E_RECOVERABLE_ERROR
Catchable fatal error. This is like an E_ERROR but can be caught by a
user defined handle (see also set_error_handler())
12 8191
E_ALL
All errors and warnings, except level E_STRICT (E_STRICT will be part of
E_ALL as of PHP 6.0)
All the above error level can be set using following PHP built-in library function where
level cab be any of the value defined in above table.
int error_reporting ( [int $level] )
Following is the way you can create one error handling function −
<?php
function handleError($errno, $errstr,$error_file,$error_line) {
echo "<b>Error:</b> [$errno] $errstr - $error_file:
$error_line";
echo "<br />";
echo "Terminating PHP Script";
die();
}
?>
Once you define your custom error handler you need to set it using PHP built-in
libraryset_error_handler function. Now lets examine our example by calling a function
which does not exist.
<?php
error_reporting( E_ERROR );
die();
}
//trigger error
myFunction();
?>
Exceptions Handling
PHP 5 has an exception model similar to that of other programming languages.
Exceptions are important and provides a better control over error handling.
When an exception is thrown, code following the statement will not be executed, and
PHP will attempt to find the first matching catch block. If an exception is not caught, a
PHP Fatal Error will be issued with an "Uncaught Exception ...
An exception can be thrown, and caught ("catched") within PHP. Code may be
surrounded in a try block.
Each try must have at least one corresponding catch block. Multiple catch blocks
can be used to catch different classes of exceptions.
Exceptions can be thrown (or re-thrown) within a catch block.
Example
Following is the piece of code, copy and paste this code into a file and verify the result.
<?php
try {
$error = 'Always throw this error';
throw new Exception($error);
// Continue execution
echo 'Hello World';
?>
In the above example $e->getMessage function is used to get error message. There
are following functions which can be used from Exception class.
You can define your own custom exception handler. Use following function to set a
user-defined exception handler function.
string set_exception_handler ( callback $exception_handler )
set_exception_handler('exception_handler');
throw new Exception('Uncaught Exception');
Check complete set of error handling functions at PHP Error Handling Functions