Le seul error level in PHP qui stoppe le script mais peut être intercepté et traité doit être déclenché avec la fonction trigger_error() correcte? Je fais référence au niveau d'erreur "E_USER_ERROR". L'erreur "E_ERROR" arrêtera simplement le script et je ne peux rien faire à ce sujet en tant que développeur.Niveaux d'erreur de PHP
Répondre
Vous pouvez créer votre propre gestion des erreurs et arrêter le script et faire ce que vous voulez en cas d'erreur.
E_ERROR simplement arrêter le script. Il est destiné à être utilisé pour:
Erreurs d'exécution fatales. Ceux-ci indiquent les erreurs qui ne peuvent pas être récupérées, comme un problème d'allocation de mémoire. L'exécution du script est arrêtée.
Vous ne pouvez pas gérer les autres types suivants d'erreur pour des raisons similaires:
- E_PARSE
- E_CORE_ERROR
- E_CORE_WARNING
- E_COMPILE_ERROR
- E_COMPILE_WARN ING
set_error_handler() peut toutefois gérer les erreurs de suivi:
- E_WARNING
- E_NOTICE
- E_USER_ERROR (en utilisant trigger_error)
- E_USER_WARNING (en utilisant trigger_error)
- E_USER_NOTICE (en utilisant trigger_error)
- E_STRICT
- E_RECOVERABLE_ERROR
Vous pouvez intercepter E_ERROR à l'aide d'un script d'arrêt. Vois ma réponse. – James
Pas vraiment sûr de ce que votre conduite ou à essayer de le faire, mais si vous êtes à la recherche d'un moyen de « attraper » et faire face aux « erreurs » - Peut-être se pencher sur exceptions.
De Manuel PHP sur les exceptions
Une exception peut être levée, et pris ("attrapée") dans PHP. Code peut être entouré dans un bloc d'essai, à faciliter la capture des exceptions potentiels. Chaque essai doit avoir au moins au moins un bloc catch correspondant. Plusieurs blocs de saisie peuvent être utilisés pour attraper différentes classes d'exeptions. exécution normale (lorsqu'aucune exception jeté dans le bloc try, ou quand une prise correspondant à classe de l'exception levée n'est pas présent) continuera après que le dernier bloc catch défini dans l'ordre . Des exceptions peuvent être lancées (ou renvoyées) dans un bloc catch.
Vous pouvez prendre E_ERROR en utilisant un script d'arrêt
de mon affichage http://jarofgreen.wordpress.com/2011/02/04/catching-php-errors/
register_shutdown_function(‘x’);
function x() {
$error = error_get_last();
if ($error) {
// deal with $error['file'],$error['line'],$error['message'],$error['type']
}
}
Notez que vous perdrez la pile en raison du fonctionnement des fonctions d'arrêt. Et si vous voulez attraper seulement E_ERROR avec cette méthode (par exemple parce que vous utilisez un gestionnaire d'erreurs traditionnel pour les autres), vous pouvez filtrer avec 'if ($ error ['type']! = E_ERROR) return;' – Lepidosteus
- 1. glDrawPixels en niveaux de gris?
- 2. Subsonic: Niveaux d'un clown
- 3. mysql niveaux d'isolement
- 4. Réglage de la requête de lignes à plusieurs niveaux à plusieurs niveaux
- 5. groupement de plusieurs niveaux dans Crystal Reports
- 6. Convertir en niveaux de gris - trop lent
- 7. Types OCaml avec différents niveaux de spécificité
- 8. Menu multi-niveaux de liste UNORDER verticale
- 9. Conception de file d'attente à plusieurs niveaux
- 10. Modifier les niveaux de navigateur dans Sharepoint
- 11. Hibernate HQL: deux niveaux de jointures
- 12. Mise en œuvre des niveaux de prix
- 13. Log4net créer des niveaux personnalisés
- 14. Différents niveaux d'accès avec PAM
- 15. Formulaires Rails complexes multi-niveaux
- 16. Niveaux ISOLATION dans la transaction
- 17. Traversant 9 niveaux dans jQuery
- 18. imprime log4j tous les niveaux
- 19. Application à deux niveaux plus tard modifiable à l'application à trois niveaux
- 20. Comment ajuster les niveaux de log4j lors de l'exécution?
- 21. Enregistrement actif/Architecture à trois niveaux
- 22. Problème analyse à plusieurs niveaux JSON
- 23. Styliser différents niveaux d'une arborescence WPF différemment?
- 24. Trois niveaux d'architecture LINQ dans Asp.net 3.5
- 25. Ressources d'applications .NET à trois niveaux
- 26. NHibernate Eager Récupération sur plusieurs niveaux
- 27. application ASP.NET sur 3 niveaux physiques
- 28. Custom SharePoint Navigation 2 niveaux Deep
- 29. Generics en C#: « deux niveaux d'indirection »
- 30. Mapping d'héritage multi-niveaux dans Hibernate
peut la poignée et l'erreur de fonction set_error_handler() avec le niveau "E_ERROR"? – lanmind
Non, les niveaux suivants ne fonctionnent pas avec un gestionnaire d'erreur client: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING – Matthew