by

PHP Error and Exception Handling

PHP Error and Exception Handling PHP Tutorial for Beginner

PHP Error and Exception Handling
PHP Error and Exception Handling

PHP Error and Exception Handling , Error handling is the process of catching errors raised by your program , taking appropriate action. If you would handle errors properly , it may lead to many unforeseen consequences.

Its very simple in PHP to handle an errors.

Using die() function

While writing your PHP program you should check all possible error condition going ahead & take appropriate action when required.

Try following example without having /tmp/test.xt file & with this file.

<?php
   if(!file_exists("/tmp/test.txt")) {
      die("File not found");
   }else {
      $file = fopen("/tmp/test.txt","r");
      print "Opend file sucessfully";
   }
   // Test of the code here.
?>

This way you can write an efficient code. Using overhead technique you can stop your program whenever it errors out & display more meaningful & user friendly message.

Defining Custom Error Handling Function

You can write your own function to handling any error. PHP provides you a framework to define error handling function.

This function must be able to handle a minimum of two parameters (error level & error message) can accept up to five parameters (optionally: file, line-number, & the error context) −

Syntax

error_function(error_level,error_message, error_file,error_line,error_context);
Sr.NoParameter & Description
1error_levelRequired – Specifies the error report level for the user-defined error. Must be a value number.
2error_messageRequired – Specifies the error message for the user-defined error
3error_fileOptional – Specifies the file name in which the error occurred
4error_lineOptional – Specifies the line number in which the error occurred
5error_contextOptional – Specifies an array containing every variable and their values in use when the error occurred
PHP Error and Exception Handling

Possible Error levels

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

Sr.NoConstant & DescriptionValue
1.E_ERRORFatal run-time errors. Execution of the script is halted1
2E_WARNINGNon-fatal run-time errors. Execution of the script is not halted2
3E_PARSECompile-time parse errors. Parse errors should only be generated by the parser.4
4E_NOTICERun-time notices. The script found something that might be an error, but could also happen when running a script normally8
5E_CORE_ERRORFatal errors that occur during PHP’s initial start-up.16
6E_CORE_WARNINGNon-fatal run-time errors. This occurs during PHP’s initial start-up.32
7E_USER_ERRORFatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error()256
8E_USER_WARNINGNon-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error()512
9E_USER_NOTICEUser-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error()1024
10E_STRICTRun-time notices. Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.2048
11E_RECOVERABLE_ERRORCatchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler())4096
12E_ALLAll errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0)8191
PHP Error and Exception Handling

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 library set_error_handler function. Now lets examine our example by calling a function which does not exist.

<?php
   error_reporting( E_ERROR );
   
   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();
   }
   
   //set error handler
   set_error_handler("handleError");
   
   //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.

Lets explain there new keyword related to exceptions.

  • Try − A function using an exception should be in a “try” block. If the exception does not trigger, the code will continue as normal. However if the exception triggers, an exception is “thrown”.
  • Throw − This is how you trigger an exception. Each “throw” must have at least one “catch”.
  • Catch − A “catch” block retrieves an exception and creates an object containing the exception information.

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);
      
      // Code following an exception is not executed.
      echo 'Never executed';
   }catch (Exception $e) {
      echo 'Caught exception: ',  $e->getMessage(), "\n";
   }
   
   // 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.

  • getMessage() − message of exception
  • getCode() − code of exception
  • getFile() − source filename
  • getLine() − source line
  • getTrace() − n array of the backtrace()
  • getTraceAsString() − formated string of trace

Creating Custom Exception Handler

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 )

Here exception_handler is the name of the function to be called when an uncaught exception occurs. This function must be defined before calling set_exception_handler().

Example

<?php
   function exception_handler($exception) {
      echo "Uncaught exception: " , $exception->getMessage(), "\n";
   }
	
   set_exception_handler('exception_handler');
   throw new Exception('Uncaught Exception');
   
   echo "Not Executed\n";
?>

Check complete set of error handling functions at PHP Error Handling Functions

click for follow us on Facebook wiki reviews always be updated, get new Tutorial on time

Comment

Leave a Reply

News Feed