2012-11-29 9 views
8

In runtime il file di registro contiene il messaggio I impostato sull'argomento trigger_error. La pagina è vuota dopo! È possibile continuare l'esecuzione del codice dopo trigger_error?Lo script di interrupt trigger_error?

risposta

11

No, trigger_error() non interrompe l'esecuzione a meno che non si passi il secondo argomento come E_USER_ERROR. Per impostazione predefinita attiva un avviso. È necessario avere un errore ad un certo punto dopo la chiamata.

trigger Attenzione:

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

trigger Fatal Error:

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

Sì, il secondo argomento è E_USER_ERROR: in effetti sto testando una sessione di distruzione, il garbage collector rimuove correttamente i dati della sessione del database e quando provo a ricaricare la pagina che crea una sessione, viene attivato il trigger_error! – pheromix

+2

'E_USER_ERROR' interromperà l'esecuzione, rimuoverà l'argomento o cambierà in E_USER_NOTICE – MrCode

+2

Se si imposta un gestore di errori personalizzato, è possibile consentire a E_USER_ERROR di continuare l'esecuzione non restituendo' false'. – Pacerier

1

Dipende da ciò che il secondo parametro si passa alla funzione trigger_error(), $error_type, è. Alcuni visualizzeranno l'errore e interromperanno l'esecuzione, altri visualizzeranno un errore e continueranno (nota, il display si basa anche sulle tue impostazioni error_reporting e display_errors).

Per esempio, se si chiama:

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

Lo script si fermerà l'esecuzione.

Tuttavia, se si chiama:

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

Lo script non si fermerà.

Per impostazione predefinita, trigger_error() utilizza E_USER_NOTICE che non interrompe l'esecuzione.

L'elenco completo dei tipi di errore può essere trovato here.

+0

Funziona solo con la famiglia di costanti E_USER – astroanu

+0

trigger_error non può essere utilizzato con E_ERROR o E_WARNING. come la documentazione php per trigger_error dice che funziona solo per la famiglia di costanti E_USER. – astroanu