bodo92
Aktives Mitglied
Hallo,
bisher habe ich bei einem "404 Error" eine Weiterleitung via header(Location: /fehler/404) gemacht, da das keine Saubere Lösung ist möchte ich jetzt eine Fehlerseite mit dem korrekten HTTP-Statuscode an den Client liefern, da bietet es sich ja an mit Exceptions zu arbeiten!
Alles funktioniert soweit wie gewünscht, da ich hierbei aber keinerlei Erfahrung habe würde ich gerne eure Meinungen und ggf. andere Vorschläge wie ich die Fehlerbehandlung einfacher/besser gestalten könnte..
Habe meine Klasse Fehler erstellt die von Exceptions erbt:
Hier ein Beispiel wo Fehler geschmissen werden:
Und natürlich der try-catch Block:
Die echo Ausgaben sind natürlich nur vorübergehend, hier sollte dann die Fehlerseite generiert werden!
Vielen Dank vorab.
LG Bodo
bisher habe ich bei einem "404 Error" eine Weiterleitung via header(Location: /fehler/404) gemacht, da das keine Saubere Lösung ist möchte ich jetzt eine Fehlerseite mit dem korrekten HTTP-Statuscode an den Client liefern, da bietet es sich ja an mit Exceptions zu arbeiten!
Alles funktioniert soweit wie gewünscht, da ich hierbei aber keinerlei Erfahrung habe würde ich gerne eure Meinungen und ggf. andere Vorschläge wie ich die Fehlerbehandlung einfacher/besser gestalten könnte..
Habe meine Klasse Fehler erstellt die von Exceptions erbt:
PHP:
<?php
class Fehler extends Exception {
public function __construct($message, $code = 0, Exception $previous = null) {
parent::__construct($message, $code, $previous);
}
}
Hier ein Beispiel wo Fehler geschmissen werden:
PHP:
public function checkRoute() {
if (array_key_exists($this->directory, $this->route)) {
if (!array_key_exists($this->action, $this->route[$this->directory]['sites'])) {
throw new Fehler('Seite nicht gefunden!', 404);
}
} else {
throw new Fehler('Seite nicht gefunden!', 404);
}
}
Und natürlich der try-catch Block:
PHP:
try {
/**
* Initialisierung der Anwendung!
*
* Aufruf des Controllers
*/
} catch (Fehler $e) {
switch ($e->getCode()) {
case 403:
header("HTTP/1.0 403 Forbidden");
echo $e->getCode() . ' ' . $e->getMessage() . '<br>';
echo $e->getFile() . ' ' . $e->getLine();
break;
case 404:
header("HTTP/1.0 404 Not Found");
echo $e->getCode() . ' ' . $e->getMessage() . '<br>';
echo $e->getFile() . ' ' . $e->getLine();
break;
default:
header("HTTP/1.0 500 Internal Server Error");
echo $e->getCode() . ' ' . $e->getMessage() . '<br>';
echo $e->getFile() . ' ' . $e->getLine();
break;
}
}
Die echo Ausgaben sind natürlich nur vorübergehend, hier sollte dann die Fehlerseite generiert werden!
Vielen Dank vorab.
LG Bodo