Wie kann ich abfangen von Fehlern und Ausnahmen in Symfony2/Silex?
Möchte ich fangen beide Fehler und Ausnahmen in meinem Silex-app wickeln Sie Sie in eine benutzerdefinierte JSON-Antwort, die immer dem Kunden zurückgegeben werden. Ich habe festgestellt, drei grundlegende Methoden:
$app->error()
Symfony\Component\Debug\ErrorHandler::register();
Symfony\Component\Debug\ExceptionHandler::register();
Während ich in der Lage bin, zu fangen controller Ausnahmen mit error()
ich versage mit php-Fehler - Sie enden immer in xdebug.
Ich bin auch Versagen, zu verstehen, wie error()
und ExceptionHandler::register()
interagieren mit einander - brauche ich beides? Wie kann ich sicherstellen, dass meine error()
Antwort ist JSON?
Ich habe folgenden Beispiel-code jetzt:
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class Router extends Silex\Application
{
function __construct() {
parent::__construct();
//routes
$this->match('/{context}', array($this, 'handler'));
//error handler
$this->error(function(\Exception $e, $code) {
return $this->json(array("error" => $e->getMessage()), $code);
});
}
function handler(Request $request, $context) {
//throw new \Exception('test'); //exception- this is caught
$t = new Test(); //error- this is not caught
return 'DONE';
}
}
Symfony\Component\Debug\ErrorHandler::register();
$app = new Router();
$app->run();
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit ErrorHandler::register(); können Sie fangen Ihre Fehler wie exceptions
Beispiel
mit silex Sie als Nächstes tun können, was
Begegne ich diesem Fall heute, und einen Weg finden, zu binden schwerwiegender Fehler mit Silex.
Erste, Sie brauchen, um das binden eines exception-handler mit Silex :
Nun, wir nutzen die Symfony-Debug-Komponente zu konvertieren Sie unsere Fehler.