How do I get PHP5's Exception Handling to catch a fatal error?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mike

    How do I get PHP5's Exception Handling to catch a fatal error?

    Last weekend I decided to install
    Apache 2.0.53-win32-x86-no_ssl
    PHP 5.0.3
    Smarty 2.6.7
    MySQL essential-4.1.10-win32

    I have Apache up (Port 80 blocked at the router and firewall!) and I
    have got
    Smarty working. I haven't got around to installing MySQL. I am now in
    chapter 8 'Error and Exception Handling' of
    "Beginning PHP 5 and MySQL: From Novice to Professional", by W. Jason
    Gilmore,
    pub. Apress. I tried example Listing 8-1. Raising an Exception:
    <?php
    //Boilerplate
    require('Smarty .class.php');
    $smarty = new Smarty;

    $smarty->template_dir=' C:\php5\include s\smarty\templa tes\\';
    $smarty->compile_dir='C :\php5\includes \smarty\templat es_c\\';
    $smarty->config_dir='C: \php5\includes\ smarty\configs\ \';
    $smarty->cache_dir='C:\ php5\includes\s marty\cache\\';

    //Example 8.1
    try {
    $conn = mysql_connect(" localhost1","we buser","secret" );
    if (! $conn) {
    throw new Exception("Coul d not connect");
    }
    }
    catch (Exception $e
    ) {
    echo "Error (File: ".$e->getFile().", line ".$e->getLine().") :
    ".$e->getMessage() ;
    }
    ?>

    Note that in the book, on the echo statement, the $e-> was missing from
    the
    getFile(). I went ahead and added it.

    Cutting to the chase, when I ran the above nothing happened. I checked
    the
    log and saw the following:

    [27-Feb-2005 11:33:59] PHP Fatal error: Call to undefined function
    mysql_connect() in
    C:\Program Files\Apache Group\Apache2\h tdocs\example81 .php on line 13

    I commented out everything in the try block except the throw statement
    and
    reran. It worked as expected. How do I get PHP to catch fatal errors?

    BTW, error_reporting = E_ALL

    --Thank you,
    --Mike Jr.

  • Janwillem Borleffs

    #2
    Re: How do I get PHP5's Exception Handling to catch a fatal error?

    Mike wrote:[color=blue]
    > How do I get PHP to catch fatal
    > errors?
    >[/color]

    You can only catch non-fatal errors. Fatal errors will always stop the
    script because of their severity. Compare it with Java, which will stop
    compiling when fatal errors occur...


    JW



    Comment

    Working...