Error Handling innerhalb einer Klasse definieren?

NetBull

Erfahrenes Mitglied
Hi,...

ich möchte mein Error Handling mehr Strukturieren und jede Klasse soll ein eigenes Error Handling bekommen.

Das hier geht:
Code:
$onError = set_error_handler("errorHandler");
	
	function errorHandler($errno, $errstr, $errfile, $errline, $errContext)
	{
		echo "$errno, $errstr, $errfile, $errline, $errContext";
	}

Aber wie mach ich das innerhalb einer Klasse?
Code:
class testClass
	{
		private $cErrorHandler;
		
		function __construct()
		{
			$this->cErrorHandler = set_error_handler("$this->errorHandling");
			echo $x;// soll ne fehlermeldung werfen
		}
		
		function errorHandling($errno, $errstr, $errfile, $errline, $errContext)
		{
			echo "$errno, $errstr, $errfile, $errline, $errContext";
		}
	}

cu s00n
deAndro!
 
Statt "$this->errorHandling" muss es array($this, 'errorHandling'); heißen.

Siehe Live-Beispiel: http://codepad.org/gpOtcrib/.


Allerdings werden alle anderen Error-Handler bei diesem Vorgehen überschrieben. Ist meiner Meinung nach nicht sehr elegant ;)

Aber ich frage mich, wieso soll jede Klasse seine eigene Fehlerbehandlungs-Routine haben?
 
Der große Vorzug von Klassen ist, das man Exceptions werfen kann. Diese sollten zentral abgefangen und behandelt werden. Ein eigener Errorhandler ist IMHO bei OOP sinnlos und kontraproduktiv, denn er verändert das Laufzeitverhalten unkontrollierbar.
 
Statt "$this->errorHandling" muss es array($this, 'errorHandling'); heißen.

Siehe Live-Beispiel: http://codepad.org/gpOtcrib/.


Allerdings werden alle anderen Error-Handler bei diesem Vorgehen überschrieben. Ist meiner Meinung nach nicht sehr elegant ;)

Aber ich frage mich, wieso soll jede Klasse seine eigene Fehlerbehandlungs-Routine haben?

Was du auch verlinken wolltest:
404 Not Found
The resource could not be found.

:(
 
Zuletzt bearbeitet:
Was willst du mir damit sagen? Ich weiß schon wie man Exceptions benutzt. deAndro hat aber nicht set_exception_handler() sondern set_error_handler() benutzt. Das ist meiner Meinung kontraproduktiv.

EDIT: Ebenfalls guten Rutsch.

Mein Beitrag war an den Threadstarter gerichtet nicht an dich. Das "This" sollte meine Zustimmung zu deinem Beitrag zeigen. :)

Hab meinen Beitrag mal bearbeitet damit das besser zu erkennen ist.

Gruß
 
Zurück