ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
9446
9446
EMPFEHLEN
-
Hallo,
seit ein paar Tagen beschäftige ich mich mit der 3. Beta Version von PHP 5.
Es hieß ja u.a. auch, dass das Exception Handling wie in Java geben sollen. Leider kommt mir es so vor, als werfen die PHP-Funktionen keine internen Exception?!
Z.b. bringt folgender Code nur einen typischen PHP-Fehler (failed to open stream: No such file or directory in ...):
In Java würde an dieser Stelle z.B. eine FileNotFoundException geworfen werden.PHP-Code:try {
include("datei.php");
} catch (exception $e) {
echo $e->getMessage();
}
Sehe ich das richtig oder gibt es eine Möglichkeit interne Exception abzufangen, etc.?!
Natürlich gibt es die Möglichkeit per If-Clausel "throw Exception" aufzurufen, was meiner Meinung nach allerdings nicht sehr viel bringt. So könnte ich theoretisch auch nur mit if() und else() arbeiten.
Gruß,
Dennis
-
PHP-Code:
<?php
try {
throw include("datei.php");
} catch (exception $e) {
echo $e->getMessage();
}
?>Die Klasse "exception" muss vorhanden sein um einen Fehler auszugeben.In Java würde an dieser Stelle z.B. eine FileNotFoundException geworfen werden.
Unter php.net ist alles wunderbar erklärt
: http://www.php.net/zend-engine-2.php
cheers,
-
Danke für die schnelle Antwort, aber ich glaube du hast mich falsch verstanden:
Ich möchte keine eigenen Exceptions schreiben und somit ist auch exception() im Code-Bespiel nicht vorhanden. In Java muss man ja z.B. auch keine NullPointerException, etc. selber schreiben.
Es geht eigentlich darum, ob PHP-Funktionen eigene Exception werfen können!
Dennis
-
Nein geht nicht, des weiteren solltest du beachten das PHP kein Java ist und auch nicht werden wird!
cheers,
-
31.10.09 08:19 #5Unksi Tutorials.de Gastzugang
Ich poste in den alten thread weil man ihn bei google unter "php error handling" weit oben findet.
Exception ist eine Klasse die im PHP Core ist, also kann man die auch benutzen, nur triggered include/require keine Exception sondern einen Error. Dh kann man den Fehler nur mit set_error_handler(function ($code,$str,$file,$line,$context){ //handle error }); einfangen, nicht mit try/catch.
Andere Möglichkeit wäre if((include "datei.php") != "OK") echo "Error loading file 'datei.php'"; .
Generell funktioniert das Error Handling in PHP >5 sehr gut, wenn man die bereitgestellen Klassen und Funktionen richtig nützt, trotzdem ist ein eigener Error & Exception Handler schnell angebracht um immer sauber formatierte Fehlermeldungen für den Benutzer zu gewähleisten.
Hierzu:
http://www.php.net/manual/en/ref.errorfunc.php
http://www.php.net/manual/en/class.exception.php
Die Exceptionklasse stellt viele der errorfunctions als Methoden bereit:
Vielleicht hilfts ja nochmal wem, konnt den mist von mowl da nur nicht so stehen lassen.PHP-Code:try {
$dblink = new PDO("mysql:host='host';dbname='db'",$user,$pass,array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING));
}
catch(Exception $err) {
echo $err->getTrace(); // Backtrace, das selbe wie debug_backtrace();
echo $err->getMessage(); // Fehlermeldung
echo $err->getCode(); // Fehlercode
echo $err->getFile(); // Datei in welcher der Fehler auftrat
echo $err->getLine(); // Zeile...
}
-
31.10.09 10:22 #6
Kleine Ergänzung zu dieser Variante:
Zu diesem Beispiel gehört natürlich dazu, dass man das error_reporting() auf 0 stellt, damit PHPs Fehlermeldungen auch unterdrückt. Dies sollte eigentlich auf jedem Produktivsystem so sein, aber ich dachte ich erwähn es nochmal
Dringend sollte man die Benutzung des @ Operator vermeiden. Dieser unterdrückt zwar die Fehlermeldung, aber macht auch das Finden von Fehlern sehr schwer... Im obigen Beispiel ist es eine Funktion deren Parameter man kurz ändern, im anderen Fall sind es mal eben 200 @-Zeichen die man entfernen muss um den Fehler zu finden...KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
Ähnliche Themen
-
Exception Handling in C#
Von mafin im Forum .NET CaféAntworten: 3Letzter Beitrag: 26.01.09, 22:11 -
Email Exception Handling
Von Tekkion im Forum Visual Basic 6.0Antworten: 7Letzter Beitrag: 29.05.08, 08:22 -
Exception Handling - Wie vorgehen
Von y0dA im Forum JavaAntworten: 8Letzter Beitrag: 21.01.08, 12:51 -
Exception-Handling
Von naeko im Forum JavaAntworten: 3Letzter Beitrag: 19.04.07, 23:06 -
exception handling in c++
Von ciMbOmFrEaK im Forum C/C++Antworten: 2Letzter Beitrag: 17.03.03, 17:49





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren