PHP allows you to handle errors that occur during the execution of the program and execute some steps to manage the errors. In order to make your code work properly, you should know how to handle unexpected errors.
die() function
It is smart move to check for all possible errors in advance to avoid big mistakes and take suitable actions if required. This method will stop your program whenever it throws some error and displays some message or information regarding the error.
Example-
<?php if(!file_exists("/tmp/first_test.txt")) { die("File not found"); }else { $file = fopen("/tmp/first_test.txt","r"); print "success- file open"; } // Code ?>
Custom error handling function
PHP supports users to create their own code to handle the error in your way. This function handles two parameters but can take up to five parameters to handle the error in your program.
Syntax
error_function(error_level,error_message,error_file,error_line,error_context);
Where,
- error _level defines the level of the error that occurred and is denoted by a number.
- Error_message allows you to display the user-defined error message.
- Error_file specifies the file where the error occurs.
- Error_line specifies the line number of the error that occurred.
- Error_context is an array that contains variables and their value for the occurred error.
The error level mentioned above in the syntax can have different values depending on the type of error that occurred. Even you can use more than one error value using the ‘|’ value. Below is the list of some user-defined error report levels.
Value | Constant | Description |
1 | E_ERROR | The fatal run-time error halts the script execution then and there. |
2 | E_WARNING | The non-fatal run-time error does not halt the script execution. |
4 | E_PARSE | Parser created this compile-time parse error. |
8 | E_NOTICE | When the script finds something that may create an error during run-time. |
16 | E_CORE_ERROR | This fatal error occurs whenever you initial start up the PHP. |
32 | E_CORE_WARNING | This non-fatal run-time error occurs during the initial start-up of PHP. |
256 | E_USER_ERROR | These are a user-generated fatal error |
512 | E_USER_WARNING | These are a user-generated non-fatal error |
1024 | E_USER_NOTICE | Used with trigger_error() function and is user-generated notice. |
2048 | E_STRICT | It allows you to make changes to the code for forwarding code compatibility and are run-time notices. |
4096 | E_RECOVERABLE_ERROR | This is the fatal error that can be caught. |
8191 | E_ALL | It includes all types of errors except E_STRICT. |
You can set error levels using PHP in-built functions-
Int error_reporting ([int $level])
Example of custom error handling
<?php function handleError($errno, $errstr,$error_file,$error_line) { echo "<b>Error:</b> [$errno] <br>"; echo "Halth the execution of the Script"; die(); } ?>
Now you have to set this custom error handling using set_error_handler , a PHP built-in function.
Example-
<?php error_reporting( E_ERROR ); function handleError($errno, $errstr,$error_file,$error_line) { echo "<b>Error:</b> [$errno]"; echo "<br />"; echo "terminate the Execution"; die(); } //setting an error handler set_error_handler("handleError"); //triggerring an error myFunction(); ?>
Exception handling in PHP
Run-time exceptions can be handled using PHP keywords. Below is the list of keywords-
- try- you can put the code within this try block which is expected to throw an error. If there is no error the code will run normally. In case there is no error then the code will run normally.
- Throw- this block will trigger an exception and comes along with at least one catch block.
- Catch- this block will create an object to handle the thrown error.
Example-
<?php try { $error = 'Error is thrown'; throw new Exception($error); // Code will not executed. echo 'the code never executed’; }catch (Exception $exp) { echo 'Caught exception: ', $exp->getMessage(); } // Continue code execution //code ?>
Exception class comes with various functions, getMessage() is one of them that is used in the above example. Some of the other functions are as below-
- getMessage() ? exception message
- getCode() ? exception code
- getFile() ? source filename
- getLine() ? source line
- getTrace() ? n array of the backtrace()
- getTraceAsString() ? formated string of trace
How to create a custom exception handler
PHP allows you to create your own exception handler with the following syntax-
string set_exception_handler ( callback $exception_handler )
You can call the exception_handler function when an exception occurs but is not caught.
Example-
<?php function exception_handler($exp) { echo "Uncaught exception occurs: " , $exp->getMessage(); } set_exception_handler('exception_handler'); throw new Exception('Uncaught Exception Occured'); ?>
Output
Uncaught exception occurs: Uncaught Exception Occured
People are also reading: