lixx: Uncaught exception 'Exception'

Hallo Leute!

Ich studiere gerade die Möglichkeiten der Exception-Klasse, bekomme sie aber nicht zum laufen. Unter http://www.tutorialspoint.com/php/php_error_handling.htm gibt es ein Beispiel:

<?php  
//create function with an exception  
function checkNum($number)  
 {  
 if($number>1)  
  {  
  throw new Exception("Value must be 1 or below");  
  }  
 return true;  
 }  
  
//trigger exception in a "try" block  
try  
 {  
 checkNum(2);  
 //If the exception is thrown, this text will not be shown  
 echo 'If you see this, the number is 1 or below';  
 }  
  
//catch exception  
catch(Exception $e)  
 {  
 echo 'Message: ' .$e->getMessage();  
 }  
?>

Das sollte folgendes ausgeben:
"Message: Value must be 1 or below"

Bei mir kommt aber die Meldung:
"Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in index.php:20 Stack trace: #0 index.php(28): checkNum(2) #1 {main} thrown in index.php on line 20"

Laut besagter Website geschieht das aber nur, wenn man die Exeption nicht catched. Was mache ich da falsch?

Folgendes Beispiel funzt aber:

<?php  
function exception_handler($exception) {  
  echo "Nicht aufgefangene Exception: " , $exception->getMessage(), "\n";  
}  
  
set_exception_handler('exception_handler');  
  
throw new Exception('Nicht aufgefangene Exception');  
echo "Nicht ausgeführt.\n";  
?>

Fehlt da noch ein set_exception_handler im obigen Beispiel?

lg lixx

  1. echo $begrüßung;

    Bei mir kommt aber die Meldung:
    "Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in index.php:20 Stack trace: #0 index.php(28): checkNum(2) #1 {main} thrown in index.php on line 20"

    Das von dir gepostete Beispiel ist zwar schrecklich formatiert zeigt aber bei mir das von dir beschriebene Verhalten nicht.

    Fehlt da noch ein set_exception_handler im obigen Beispiel?

    Nein, das ist nur eine generelle Möglichkeit, ungefangene Exceptions doch noch zu fangen.

    echo "$verabschiedung $name";

    1. Villeicht hilft das weiter:
      Ich verwende gerade PHP Version 5.2.3

      lg lixx

      1. echo $begrüßung;

        Villeicht hilft das weiter:
        Ich verwende gerade PHP Version 5.2.3

        Zwischen 5.2.3 und 5.2.5 (mit dem ich testete) gibt es laut ChangeLog keine Änderungen bezüglich Exceptions. Du machst vermutlich irgendwas anders als in dem geposteten Code.

        echo "$verabschiedung $name";

        1. Zwischen 5.2.3 und 5.2.5 (mit dem ich testete) gibt es laut ChangeLog keine Änderungen bezüglich Exceptions. Du machst vermutlich irgendwas anders als in dem geposteten Code.

          Was soll ich damit machen? Das ist die index.php die aufgerufen wird, und sonst ist da nix anderes .. ?:o

          1. Werde es mal mit einer neu-installation versuchen.

          2. echo $begrüßung;

            Du machst vermutlich irgendwas anders als in dem geposteten Code.
            Was soll ich damit machen? Das ist die index.php die aufgerufen wird, und sonst ist da nix anderes .. ?:o

            Wenn das exakt ein Copy'n'Paste deines Codes ist, dann ist da kein Grund für die nicht gefangene Exception zu sehen. Irgendwas ist ganz bestimmt anders. Zum Beispiel ist die, gemäß Meldung, Zeile 20 in deinem Posting die mit dem Kommentar "//catch exception". Du könntest zur Suche des Fehlers Ausgaben an die wichtigsten Punkte einbauen. Dann kannst du anhand dieser verfolgen, welchen Weg PHP durch dein Script nimmt.

            echo "$verabschiedung $name";

      2. Guten Tag,

        Villeicht hilft das weiter:
        Ich verwende gerade PHP Version 5.2.3

        $ php523/bin/php -v; php523/bin/php -f execp.php  
        PHP 5.2.3 (cli) (built: Jan  9 2009 12:39:13)  
        Copyright (c) 1997-2007 The PHP Group  
        Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies  
        Message: Value must be 1 or below
        

        Passt bei mir mit 5.2.3 und mit 5.2.8.

        Gruß
        Christoph Jeschke

        --
        Zend Certified Engineer
        Certified Urchin Admin