Java Techies- Solution for All
Exception Handling
- PHP 5 is that you can now use exceptions, like other OOP languages.
- PHP 5 introduces an exceptions objects to simplify your error .
- An
Exception
is any unusual condition that causes an alteration in program flow, such as a missing file or a null pointer. - There are 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.
Use of Exceptions :
- When an exception is thrown,so that code will not be executed, and will try to find the matching "catch" block.
- If an exception is not caught, a fatal error will be issued with an "Uncaught Exception" message.
Example :
<?php //create function with an exception function check($num) { if($num>10) { throw new Exception("Value must be 10 or below"); } return true; } //trigger exception check(11); ?>
Output :
Fatal error: Uncaught exception 'Exception' with message 'Value must be 10 or below' in C:\xampp\htdocs\First\exception.php:7 Stack trace: #0> C:\xampp\htdocs\First\exception.php(13):check(11) #1 {main} thrown
Try, throw and catch
- Try :try is used to define a block of code in which exception can be occurred.
- Catch :catch block immediately after try block. The catch block will tell your program just what to do in case the exception actually does occur. If no exception occurs, then the catch block is ignored, and your program moves along smoothly.
- Throw :to throw an exception explicitly.
Example :
<?php //create function with an exception function check($num) { if($num>10) { throw new Exception("Value must be 10 or below"); } return true; } // exception in a "try" block try { check(10); //If the exception is thrown, echo 'If you see this, the number is 10 or below'; } //catch exception catch(Exception $e) { echo 'Message: ' .$e->getMessage(); } ?>
Output :
If you see this, the number is 10 or below
Creating a Custom Exception Class
- We can create own exceptions by extending 'Exception' class.
- Own exception is also known as "User Defined Exception".
Example :
<?php class customException extends Exception { public function errorDisplay() { //error message $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile() .': <b>'.$this->getMessage().'</b> is invalid E-Mail address'; return $errorMsg; } } $email = "abc@example..com"; try { //check if if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { //throw exception if email is invalid throw new customException($email); } } catch (customException $e) { //display custom message echo $e->errorDisplay(); } ?>
Output :
Error on line 21 in C:\xampp\htdocs\First\customException.php: abc@example..com is invalid E-Mail address
Multiple Catch
- A single try block can have multiple catch blocks.
- It's required when the try block has statements that generates different types of exceptions.
- If the first catch block contains the Exception class object then the subsequent catch blocks are never executed.
- The last catch block in multiple catch blocks must contain the Exception class object.
- Because the java complier gives an error saying that the subsequent catch blocks haven't been reached.
Example :
<?php class customException extends Exception { public function errorDisplay() { //error message $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile() .': '.$this->getMessage().' is not a valid E-Mail address'; return $errorMsg; } } $email = "abc@example.com"; try { //check if if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { //throw exception if email is invalid throw new customException($email); } //check for "example" in mail address if(strpos($email, "example") !== FALSE) { throw new Exception("$email is e-mail"); } } catch (customException $e) { echo $e->errorDisplay(); } catch(Exception $e) { echo $e->getMessage(); } ?>
Output :
abc@example.com is e-mail
Re-throwing Exceptions
- If you use throw an exception more than one time within a "catch" block.
Example :
<?php class customException extends Exception { public function errorDisplay() { //error dispkay $errorMsg = $this->getMessage().' is invalid E-Mail address.'; return $errorMsg; } } $email = "abc@example.com"; try { try { //check for "example" in mail address if(strpos($email, "example") !== FALSE) { //throw exception if email is invalid throw new Exception($email); } } catch(Exception $e) { //re-throw exception throw new customException($email); } } catch (customException $e) { //display custom message echo $e->errorDisplay(); } ?>
Output :
abc@example.com is invalid E-Mail address.