PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Fehlerursache genauer festellen


Kinman
2009-01-20, 22:17:29
Hallo, ich habe ein "Problem" das mich schon länger beschäftigt. Und zwar hab ich eine selbstgeschriebene Datenbankklasse, die natürlich ihre eigene Datei hat. Wenn ich jetzt eine Abfrage starte und beim SQL Code irgendwas falsch mache, dann schreibt mir PHP logischerweise "Fehler in Zeile xxx in Datei database.php".
Also im Prinzip Datei und Zeile, wo die Abfrage stattfindent und somit auch der Fehler entsteht.
Gibt es jetzt eventuell eine Möglichkeit, die Datei und Zeile in dem der meine Methode aufgerufen wird in der Fehlermeldung anzuzeigen?

Meine Gedanken gehen mal soweit: Eine eigene Exceptionbehandlung (try catch) und den Fehler auffangen. Soweit kein Problem. Aber wie stelle ich fest, wo der Funktionsaufruf war. Oder kann ich irgendwie den Fehler weitergeben. Daher von der PHP implementierten Abfragefunktion auf meine Methode?

Danke, mfg Kinman

The_Invisible
2009-01-20, 22:54:35
es gibt die konstanten (und vielleicht mehr):

__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__

glaube das ist es was du suchst.

mfg

Kinman
2009-01-20, 23:03:42
Leider nicht, da die erst wieder die Falsche Datei/Zeile ausgeben würden

Trotzdem danke,
mfg Kinman

Berni
2009-01-20, 23:24:31
Gib halt bei try-> catch dann einfach die SQL-query aus, welche du der Funktion übergeben hast. Dann solltest du ja wissen, wo das herkommt.

Kinman
2009-01-20, 23:38:17
Gib halt bei try-> catch dann einfach die SQL-query aus, welche du der Funktion übergeben hast. Dann solltest du ja wissen, wo das herkommt.

Prinzipiell ja, allerdings möchte ich das dann auch noch bei anderen Funktionen verwenden und immer kann ich nicht sofort am Query erkennen, was los ist. Momentan mach ich es mehr oder weniger so, da ich im Debug Modus jede Query ausgebe. Die, nach der der Fehler steht ist schuld.

Ums vielleicht etwas allgemeiner zu formulieren:
Habe ich eine Chance in einer Funktion die Datei und Zeile des Aufrufs (im fehlerfall reicht eigentlich) der Funktion festzustellen?

mfg Kinman

monxoom
2009-01-21, 00:05:02
Du kannst ja den Funktionsaufruf mit ´nem try-Block versehen á la

try {
riskyFunc();
} catch (Fooclass $error) {
// ...
}

Marscel
2009-01-21, 11:13:46
Meinst du sowas? http://de.php.net/manual/de/function.debug-print-backtrace.php