When I throw an exception which is derived from the internal
    Exception class and implement __toString but do not return a value,
    the reported error (in case I don't catch the exception) is:


Fatal error: Uncaught
  thrown in /home/mfischer/htdocs/php5/MySQL.php on line 8

    i.e. the word 'exception' is missing (and there's redundant line
    break it seems).

    Example is from:

<?php
    class MyException extends Exception {
        function __toString() {
            return "";
        }
    }

    throw new MyException;
?>




    If I throw some other object not derived from Exception (e.g.
    stdClass) I get this (which makes more sense):

$ php -r 'throw new stdClass;'

Fatal error: Uncaught exception 'stdClass' in Unknown on line 0


    What I want to say is, that I think it would be a good idea to print
    out "Fatal error: Uncaught exception '<classname>' thrown in .."
    even if __toString is not implemented. Just for consistency.


    Another thing I observed is the preserving of the case of the
    classname. If I throw e.g. stdClass, the case is preserved; but not
    if I throw my own class:

        $ php -r 'throw new stdClass;'

        Fatal error: Uncaught exception 'stdClass' in Unknown on line 0

    versus

        $ php -r 'class MyEx extends Exception {}; throw new MyEx;'

        Fatal error: Uncaught exception 'myex' with message 'Unknown exception' in 
Command line code:1
        Stack trace:
        #0 {main}
          thrown in Command line code on line 1


    This all may be sound like nitpicking but I think for consistency
    and if it's not too complex these small things should be looked
    into.

    cheers,

        - Markus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to