Vorrei essere in grado di lanciare un errore irreversibile fatale nella mia classe php quando un utente della mia classe lo abusa per qualcosa che non intendevo. Non voglio che lui/lei sia in grado di recuperare con una clausola di cattura. Conosco lo trigger_error
, ma posso farlo solo emettere avvisi o notifiche.PHP: errore fatale di trigger?
risposta
E_USER_ERROR è la costante adatta.
trigger_error("Fatal error", E_USER_ERROR);
Vedere anche il primo esempio della pagina di manuale.
molto ironico che il ragazzo che ha detto "Utile per le persone che non amano leggere le documentazioni" non si è preso la briga di leggere il primo esempio della pagina di manuale. –
debug_print_backtrace();
trigger_error("As much information as you can provide, please", E_USER_ERROR);
exit();
exit() termina interamente lo script PHP. Più informazioni puoi fornire agli utenti o agli sviluppatori sull'errore, meglio è. I codici di errore sono passé.
Modifica: l'uso di E_USER_ERROR dovrebbe terminare comunque lo script, quindi spostato debug_print_backtrace() prima di trigger_error().
assolutamente, aggiungendo morire; o uscita; comando dopo il lancio di tale errore è solo il modo per essere sicuro quasi al 100%. L'unico modo per evitarlo (si aspettano le funzioni disabilitate php.ini) è [runkit_function_remove] (http://php.net/manual/en/function.runkit-function-remove.php) –
Nota: se si sta utilizzando un gestore di errore personalizzato (vedi set_error_handler) E_USER_ERROR
volontà non fermare/uscita/die a meno che il gestore di errori restituisce false
poche parole: il vostro gestore di errore personalizzato determina in modo efficace se viene trattato E_USER_ERROR
come fatale
Molto vero. Come ho notato in un altro posto, puoi creare un errore fatale tramite: if ($ isTestMode == 1) { eval ("noSuchFunction();"); } Questo metodo funzionerà sempre. –
Grazie Brad, questo mi ha davvero aiutato, sto usando la funzione personalizzata di gestione degli errori. Sebbene si trattasse di "gestire l'errore", ho attivato con il flag E_USER_ERROR che non causava un errore "fatale" fino a quando non ho restituito false dalla funzione di gestione degli errori. – dading84
- 1. Errore fatale PHP, Pera?
- 2. test di PHP per errore fatale
- 3. PHP MongoDB errore fatale: Leggi scaduta
- 4. errore fatale Varien_Autoload non trovato
- 5. Qual è la funzione di errore di trigger in PHP?
- 6. fatale RecursiveIteratorIterator errore non trovato
- 7. php fatale errore: classe sqlite3 non si trova in
- 8. perché ottengo PHP errore fatale quando voglio installare un'estensione
- 9. Errore fatale php Wordpress: chiamata alla funzione non definita language_attributes()?
- 10. I comandi php bin/console symfony danno un errore fatale
- 11. Errore vs Fatale nei test
- 12. errore fatale: indice fuori intervallo
- 13. Errore irreversibile di catch PHP
- 14. errore PostgreSQL trigger
- 15. DoctrineMongoDBBundle ottenendo un errore fatale in Symfony2
- 16. errore fatale: file 'openssl/bio.h' non trovato
- 17. errore fatale: vector: nessun file o directory
- 18. Errore fatale per ambiente runtime Java
- 19. errore fatale pycaffe: file "Python.h" non trovato
- 20. Git Errore fatale: informazioni/refs non trovato
- 21. RewriteLog trigger Errore interno server
- 22. Errore fatale durante l'aggiornamento modulo usando GIT
- 23. errore fatale C1083: impossibile aprire include file
- 24. Java JRE errore fatale: troppi moltiplicazioni
- 25. errore fatale C1004: trovato fine file inaspettato
- 26. fatale: non un repository git - Errore
- 27. errore fatale: non è possibile incrementare endIndex
- 28. java.lang.Error: Probabile errore fatale: nessun font trovato
- 29. errore fatale: iostream.h Nessun file o directory
- 30. Errore di sintassi sql creazione trigger
Perché preoccuparsi? Chiunque stia implementando la tua classe: 1. È un programmatore. 2. Ha accesso alla fonte. 3. Can e probabilmente cancellerà la chiamata 'trigger_error()'. – Sammitch
@ Sammitch: voglio chiarire le mie intenzioni. Voglio permettere a chiunque usi il mio codice di sapere che quello che stanno facendo non è il modo in cui intendevo usarlo. A me lanciare un'eccezione invia il messaggio "ti occupi di questo comportamento indefinito". Voglio inviare il messaggio: "Non farlo in questo modo, fallo in questo modo". – DudeOnRock
Librerie di esempio. Dove dovresti assolutamente NON fare qualcosa se qualche condizione non è vera. (Utile per le persone che non amano leggere le documentazioni: P) – bwoebi