Uncaught exception 'Exception'
lixx
- php
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
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";
Villeicht hilft das weiter:
Ich verwende gerade PHP Version 5.2.3
lg lixx
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";
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
Werde es mal mit einer neu-installation versuchen.
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";
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