• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
The Electric Toolbox Blog

The Electric Toolbox Blog

Linux, Apache, Nginx, MySQL, Javascript and PHP articles

  • Applications
  • FCKEditor
  • Apache
  • Windows
  • Contact Us
Home / Exiting from within a PHP exception

Exiting from within a PHP exception

This is the final post in my series about PHP exceptions and looks at how when an exception occurs, script execution may continue depending on how the exception is handled.

Examples

I’ve been using PHP’s PDO library recently instead of the more traditional approach of using the database specific functions such as the mysql_* functions. PDO is an object oriented approach and uses the exception model to throw errors. It is a useful example to show how execution will continue even if an exception is thrown when attempting to connect to the database.

The two examples below attempt to establish a connection to a MySQL database using a database, login name and password that do not exist, defined as follows:

$dsn = "mysql:host=localhost;dbname=fakedb";
$username = "fakeuser";
$password = "fakepassword";

The first example doesn’t bother attempting to catch the exception and execution will halt before getting to the line ‘echo "code continues heren";’:

$pdo = new PDO($dsn, $username, $password);
echo "code continues heren";

This will output the following:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'fakeuser'@'localhost' (using password: YES)' in /common/websites/test/exceptions-example.php:7
Stack trace:
#0 /common/websites/test/exceptions-example.php(7): PDO->__construct('mysql:host=loca...', 'fakeuser', 'fakepassword')
#1 {main}
  thrown in /common/websites/test/exceptions-example.php on line 7

Because the exception is not handled, the error message will be displayed and execution will halt. Ideally we do not want to display error messages such as the above.

On the other hand, if we handle the exception without ending the script using exit or die:

try {
    $pdo = new PDO($dsn, $username, $password);
}
catch(Exception $e) {
    echo "Exceptionn";
}
echo "code continues heren";

then this is what will be echoed:

Exception
code continues here

In the event of an exception occurring that means the script cannot continue to run, such as not being able to connect to the database, execution should halt (after doing whatever logging or emailed notifications etc is required).

This is often as simple as using exit to end the script’s execution like so:

try {
    $pdo = new PDO($dsn, $username, $password);
}
catch(Exception $e) {
    // do some logging and/or notification here
    exit;
}

The PHP Exception Series

This concludes my series on PHP exceptions. See the related posts below for earlier posts in the series.

Check Out These Related posts:

  1. PHP Exceptions – available information
  2. Catch uncaught exceptions with PHP
  3. Handling errors when connecting to a database using PHP PDO
  4. Replace error reporting with exception handlers with PHP

Filed Under: PHP

Primary Sidebar

Categories

  • Apache
  • Applications
  • Article
  • Case Studies
  • Email Servers
  • FCKEditor
  • HTML And CSS
  • Javascript
  • Linux/Unix/BSD
  • Microsoft SQL Server
  • Miscellaneous Postings
  • MySql
  • Networking
  • Nginx Web Server
  • Offsite Articles
  • OSX
  • PHP
  • Quick Tips
  • RFC – Request for Comments
  • SilverStripe
  • VMWare
  • VPN
  • Windows
  • WordPress

Recent Posts

  • Vim Show Line Numbers
  • Add User To Group Linux
  • Chmod 777 Tutorial
  • How to Copy Directory Linux
  • Linux create user

Copyright © 2021. ElectricToolBox. All Rights Reserved.

  • Contact Us
  • Copyright Info
  • Privacy Policy
  • Sitemap