2012-11-29 4 views
8

Zur Laufzeit enthält die Protokolldatei die Nachricht, die ich auf das Argument trigger_error gesetzt habe. Die Seite ist danach leer! Ist es möglich, die Codeausführung nach trigger_error fortzusetzen?Interpretiert Trigger_Fehler Skript?

Antwort

11

Nein, trigger_error() stoppt die Ausführung nur, wenn Sie das zweite Argument als E_USER_ERROR übergeben. Standardmäßig wird eine Warnung ausgelöst. Nach dem Anruf muss ein Fehler auftreten.

Trigger-Warnung:

trigger_error("CTest message"); // defaults to E_USER_NOTICE 

Trigger-Schwerwiegender Fehler:

trigger_error("Test message", E_USER_ERROR); 
+1

Ja das zweite Argument ist E_USER_ERROR: tatsächlich teste ich eine Sitzung Zerstörung, der Garbage Collector entfernt erfolgreich Datenbanksitzung Daten, und wenn ich versuche, die Seite neu zu laden, die eine Sitzung erstellt, dann wird der trigger_error ausgelöst! – pheromix

+2

'E_USER_ERROR' stoppt die Ausführung, entfernt das Argument oder ändert es in E_USER_NOTICE – MrCode

+2

Wenn Sie einen benutzerdefinierten Error-Handler setzen, können Sie E_USER_ERROR erlauben, die Ausführung fortzusetzen, indem Sie' false' nicht zurückgeben. – Pacerier

1

Es hängt davon ab, was der zweite Parameter, den Sie an die trigger_error() Funktion übergeben, $error_type ist. Einige zeigen den Fehler an und stoppen die Ausführung, andere zeigen einen Fehler an und fahren fort (beachten Sie, dass die Anzeige auch auf Ihren Einstellungen error_reporting und display_errors basiert).

Zum Beispiel, wenn Sie anrufen:

trigger_error('This is an error', E_USER_ERROR); 

Ihre Skriptausführung stoppen.

Wenn Sie jedoch nennen:

trigger_error('This is a warning', E_USER_WARNING); 

Ihr Skript wird nicht aufhören.

Standardmäßig verwendet trigger_error()E_USER_NOTICE, wodurch die Ausführung nicht gestoppt wird.

Die vollständige Liste der Fehlertypen finden Sie here.

+0

Es funktioniert nur mit der E_USER-Familie von Konstanten – astroanu

+0

trigger_error kann nicht mit E_ERROR oder E_WARNING verwendet werden. Wie die php-Dokumentation für trigger_error sagt, funktioniert sie nur für die E_USER-Konstantenfamilie. – astroanu

Verwandte Themen