PHP Schwerwiegender Fehler: Nicht abgefangene Ausnahme 'Ausnahme'

8

Ich spiele mit Ausnahmen in PHP herum. Zum Beispiel habe ich ein Skript, das eine $ _GET Anfrage liest und eine Datei lädt; Wenn die Datei nicht existiert, sollte eine neue Ausnahme ausgelöst werden:

%Vor%

Das Problem ist, dass, wenn ich versuche, eine nicht vorhandene Datei für den Test zu liefern, habe ich einen Fehler 500 anstelle der Ausnahmebedingungsnachricht erhalten. Das Serverprotokoll ist das folgende:

%Vor%

Ich frage mich, ob ich hier etwas wirklich Offensichtliches vermisse.

Ich habe diese Frage überprüft PHP fataler Fehler: Uncaught Ausnahme 'Exception' mit Nachricht , aber es ist nicht ganz mein Problem, und habe keine knappe Antwort.

Hilfe, bitte?

* EDIT *

Es scheint, dass dies etwas mit dem Schlüsselwort throw zu tun hat. Wenn ich zum Beispiel echo verwende, wird die Nachricht wie folgt auf dem Bildschirm ausgegeben:

Ausnahme 'Ausnahme' mit der Nachricht 'Die Datei existiert nicht.' in C: \ sites \ wonderfulproject \ script.php: 183 Stapelüberwachung: # 0 {main}

Warum ist das so?

** EDIT 2 **

Dank @Orangepill habe ich ein besseres Verständnis dafür entwickelt, wie man mit Ausnahmen umgehen kann. Und ich habe ein tolles Tut von Nettuts gefunden, das mir sehr geholfen hat. Der Link: Ссылка

    
darksoulsong 09.07.2013, 18:49
quelle

3 Antworten

21

Dies ist das erwartete Verhalten für eine nicht abgefangene Ausnahme mit display_errors off.

Hier haben Sie die Möglichkeit, display_errors über php oder in der ini-Datei einzuschalten oder die Exception abzufangen und auszugeben.

%Vor%

oder

%Vor%

Wenn Sie Ausnahmen machen, ist die Absicht, dass irgendwo etwas weiter unten etwas fängt und sich damit beschäftigt. Wenn nicht, ist es ein Serverfehler (500).

Eine andere Option für Sie wäre set_exception_handler , um einen Standard festzulegen Fehlerhandler für Ihr Skript.

%Vor%     
Orangepill 09.07.2013, 18:54
quelle
7

Fügen Sie hier ein paar zusätzliche Informationen hinzu, falls jemand das gleiche Problem hat wie ich.

Ich verwende Namensräume in meinem Code und ich hatte eine Klasse mit einer Funktion, die eine Ausnahme auslöst.

Allerdings wurde mein try / catch-Code in einer anderen Klassendatei vollständig ignoriert und der normale PHP-Fehler für eine uncatched-Ausnahme wurde ausgelöst.

Ich habe vergessen, "use \ Exception;" oben, das Hinzufügen, das den Fehler löste.

    
xorinzor 14.04.2014 22:01
quelle
0

Für

%Vor%

Ich habe 500 bekommen (habe aber nichts im Browser gesehen), bis ich

gestellt habe %Vor%

in meinem .htaccess (nur für einen Unterordner). Es gibt auch detailliertere Einstellungen, siehe Aktivieren der Fehleranzeige in PHP nur über htaccess

    
Evgenii Lycenok 05.10.2017 01:08
quelle

Tags und Links