Introduction

Hi guys, In previous article we have learned about the Basic use of exceptions.
In this article we going to understand the next four error handling methods. An exception is the abnormal termination of the program. It is known as run time errors.To avoid the abnormal termination of program we use exception handling.

Different error handling methods

  • Basic use of exceptions
  • Creating a custom exception handler
  • Multiple exceptions
  • Re-throwing an exception
  • Setting a top level exception handler

Creating a custom exception handler

Here we will understand the concept creating a custom exception handler is quite simple. We simply create a special class with functions that can be called when an exception occurs in PHP. The class must be an extension of the exception class.

Script for Custom exception handler

<html>
<
body bgcolor="lavender">
<center>
<
h3> Creating a custom exception handler <h3>
<
hr>
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.
': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
return $errorMsg;
}
}
$email =
"[email protected]";
try
{
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//throw exception if email is not valid
throw new customException($email);
}
}

catch (customException $e)
{
//display custom message
echo $e->errorMessage();
}
?>
</center>
</
body>
</html>

Save it as custom.php

Elaboration of above script

The above script is used to put the custom exception prevention to rectify the problems. Here in the code we use customException class.

Multiple exceptions

Here we will understand the how we can handle the multiple exception checking. It is possible to use several if..else blocks, a switch, or nest multiple exceptions. These exceptions can use different exception classes and return different error messages.

Script

<html>
<
body bgcolor="pink">
<center>
<
h3> Multiple exceptions <h3>
<
hr>
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.
': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
return $errorMsg;
}
}
$email =
"[email protected]";
try
{
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//throw exception if email is not valid
throw new customException($email);
}
//check for "example" in mail address
if(strpos($email, "example") !== FALSE)
{
throw new Exception("$email is an example e-mail");
}
}
catch (customException $e)
{
echo $e->errorMessage();
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>
</center>
</
body>
</html>

Save it as custom.php

Output

To run the code, Open the XAMPP server and start the services like Apache and MySQL. Open the browser type: http://localhost/yourfoldername/custom.php


multi.gif


Elaboration of above script

The code is used to handled the multiple exception.

Re-throwing Exceptions Method in PHP

The concept behind the re-throwing exception is sometimes what happens, when an exception is thrown, you may wish to handle it differently than the standard way. It is possible to throw an exception a second time within a "catch" block.

Lets see the re-throwing with example

<html>
<
body bgcolor="lavender">
<center>
<
h3> Re-throwing exceptions <h3>
<
hr>
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = $this->getMessage().' is not a valid E-Mail address.';
return $errorMsg;
}
}
$email =
"[email protected]";
try
{
try
{
//check for "gmail" in mail address
if(strpos($email, "gmail") !== FALSE)
{
//throw exception if email is not valid
throw new Exception($email);
}
}
catch(Exception $e)
{
//re-throw exception
throw new customException($email);
}
}
catch (customException $e)
{
//display custom message
echo $e->errorMessage();
}
?>
</center>
</
body>
</html>

Save it as custom.php

Output

To run the code, Open the XAMPP server and start the services like Apache and MySQL. Open the browser type: http://localhost/yourfoldername/custom.php

re-throwing.gif

If the exception is not caught in its current "try" block, it will search for a catch block on "higher levels".

Set a Top Level Exception Handler

The set_exception_handler() function sets a user-defined function to handle all uncaught exceptions.

Script for Top level exception

<html>
<
body bgcolor="lavender">
<center>
<
h3> Set a Top Level Exception Handler <h3>
<
hr>
<?php
function myException($exception)
{
echo "<b>Exception:</b> " , $exception->getMessage();
}
set_exception_handler(
'myException');
throw new Exception('Uncaught Exception occurred');
?>
</center>
</
body>
</html>

Save it as custom.php

Output

To run the code, Open the XAMPP server and start the services like Apache and MySQL. Open the browser type: http://localhost/yourfoldername/custom.php


multi3.gif