Error Handler selbst machen, aber wie?

Alles, was PHP betrifft, kann hier besprochen werden.

Error Handler selbst machen, aber wie?

Postby Kev » 07. September 2005 15:14

Huhu zusammen,
hab nen kleines prob und zwar wolltsch selbst nen error_handler schreiben, das prob besteht nur darin das ich es net hinbekomm, das er den fehlerpfad ändert bzw. einen anderen angezeigt...

Weil es ist net so schön wenn jemand so grad rausbekommt wo alles so liegt usw. bitte um hilfe, dankeschön ;)
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby jakimo72 » 01. October 2005 21:06

Was genau soll ein solcher Error-Handler tun? Bei welchen Fehlern soll er wie anspringen? Ab php5 gibt es auch try...catch... damit kann man ganz passabel auf Fehler reagieren, oder aber weiterreichen.
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby Kev » 01. October 2005 21:12

Code: Select all
// umdefinieren der Konstanten - nur in PHP 4
define("FATAL", E_USER_ERROR);
define("ERROR", E_USER_WARNING);
define("WARNING", E_USER_NOTICE);

// die Stufe für dieses Skript einstellen
error_reporting(FATAL | ERROR | WARNING);

// Fehlerbehandlungsfunktion
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
  switch ($errno) {
  case FATAL:
   echo "<b>FATAL</b> [$errno] $errstr<br />\n";
   echo "  Fatal error in line $errline of file $errfile";
   echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
   echo "Aborting...<br />\n";
   exit(1);
   break;
  case ERROR:
   echo "<b>ERROR</b> [$errno] $errstr<br />\n";
   break;
  case WARNING:
   echo "<b>WARNING</b> [$errno] $errstr<br />\n";
   break;
  default:
   echo "Unkown error type: [$errno] $errstr<br />\n";
   break;
  }
}

// auf die benutzerdefinierte Fehlerbehandlung umstellen
$old_error_handler = set_error_handler("myErrorHandler");



Den hab ich jetzt soweit von php.net soweit alles ok, aber ich bekomms nit hin das er auch beim parsen falls fehler auftritt meldung ausgeben soll...

Sprich ich will noch hier parse einbringen soweit funzt es aber leider nit
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby jakimo72 » 02. October 2005 01:30

Die Parse-Error werden vom Just-In-Time-Compiler
zurückgegeben, und nicht von der Laufzeitumgebung.
Daher sind die Parse-Error immer getrennt von anderen
Fehlern. Aber meistens sind Parse-Error sowieso nur vergessene
Semikolon oder nicht geschlosse Klammern, also mehr oder weniger
trivial.
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby jakimo72 » 02. October 2005 01:55

Ich verstehe an Deinem Code nicht warum Du die Konstanten
umdefinierst. Im Errorhandler kannst Du direkt die
Konstanten E_ERROR, E_WARNING, E_USER_ERROR usw. benutzen.
Die Konstanten:
http://php.speedbone.de/manual/de/ref.e ... hp#e-error

Dabei werden E_ERROR, E_WARNING und E_NOTICE vom System ausgegeben, E_USER_ERROR usw. werden nur durch den Aufruf von
trigger_error() erzeugt. E_PARSE wird leider erzeugt, bevor
set_error_handler() verarbeitet wurde...
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek


Return to PHP

Who is online

Users browsing this forum: No registered users and 21 guests