1. Il existe désormais deux classes d'exception : Exception et Error
PHP7 a désormais deux classes d'exception, Exception et Error. Les deux classes implémentent une nouvelle interface : Throwable. Dans votre code de gestion des exceptions, les indications de type devront peut-être être ajustées.
2. Certaines erreurs fatales et erreurs fatales récupérables sont modifiées pour lancer des objets Error.
Certaines erreurs fatales et erreurs fatales récupérables sont désormais signalées en tant qu'objets d'erreur. Les objets d'erreur sont indépendants de l'exception et ne peuvent pas être interceptés par un try/catch normal. Note de l'éditeur : vous devez enregistrer une fonction de gestion des erreurs, veuillez vous référer à la RFC ci-dessous.
Ces erreurs fatales récupérables qui se sont transformées en exceptions ne peuvent plus être ignorées silencieusement via le gestionnaire d'erreurs. En particulier, les erreurs d’indication de type ne peuvent être ignorées.
3. Les erreurs de syntaxe lanceront un objet ParseError
Les erreurs de syntaxe lanceront un objet ParseError, qui hérite de l'objet Error. Lors de la manipulation de eval() auparavant, en plus de vérifier la valeur de retour ou error_get_last() pour le code potentiellement sujet aux erreurs, vous devez également capturer l'objet ParseError.
4. La méthode de construction des objets internes lèvera toujours une exception en cas d'échec.
La méthode de construction des objets internes lèvera toujours une exception en cas d'échec. Certains constructeurs précédents renvoyaient NULL ou un objet inutilisable.
5. Les niveaux de certaines erreurs E_STRICT ont été ajustés.
Gestion des erreurs PHP 7
PHP 7 modifie la façon dont la plupart des erreurs sont signalées. Contrairement au mécanisme traditionnel de rapport d'erreurs de PHP 5, la plupart des erreurs sont désormais générées en tant qu'exceptions d'erreur.
Ce type d'exception d'erreur peut être intercepté par un bloc try/catch comme une exception normale. S'il n'y a pas de bloc try/catch correspondant, La fonction de gestion des exceptions (enregistrée par set_exception_handler()) est appelée pour le traitement. Si un gestionnaire d'exceptions n'a pas été enregistré, il est traité de manière traditionnelle : il est signalé comme une erreur fatale.
La classe Error n'est pas étendue à partir de la classe Exception, donc un code comme catch (Exception $e) { ... } ne peut pas être intercepté à l'erreur. Vous pouvez utiliser du code comme catch (Error $e) { ... } ou en enregistrant un gestionnaire d'exceptions ( set_exception_handler()) pour détecter l'erreur.
Hiérarchie des exceptions d'erreur
1.Erreur
ErreurArithmétique Surerreurd'assertion SurDivisionparzéroerreur OuPARSEERROR OuTypeerreur
2.Exception
...
Exemple
<?php class MathOperations { protected $n = 10; // 求余数运算,除数为 0,抛出异常 public function doOperation(): string { try { $value = $this->n % 0; return $value; } catch (DivisionByZeroError $e) { return $e->getMessage(); } } } $mathOperationsObj = new MathOperations(); print($mathOperationsObj->doOperation()); ?>Le résultat de sortie de l'exécution du programme ci-dessus est :
Modulo by zero
Exceptions PHP 7
Exceptions PHP 7 sont utilisés pour réduire la compatibilité et améliorer l’ancienne fonction assert(). Il permet des assertions sans coût dans les environnements de production et offre la possibilité de générer des exceptions et des erreurs personnalisées.
L'ancienne version de l'API continuera d'être maintenue à des fins de compatibilité, assert() est désormais une construction de langage, qui permet au premier paramètre d'être une expression, pas seulement une chaîne à calculer ou un booléen à tester.
configuration assert()
Élément de configuration Valeur par défaut Valeur facultative zend.assertions 1 -
1 - Générer et exécuter du code (mode développement)
0 - Générer du code, mais l'ignorer lors de l'exécution 1 - Lancé lorsqu'une assertion échoue, un objet d'exception peut être levé ou une instance d'objet AssertionError est levée si aucune exception n'est fournie.
0 - Utilisez ou générez Throwable, générez simplement des avertissements basés sur des objets au lieu de lancer des objets (compatible avec PHP 5)
paramètres
assertion
assertion. En PHP 5, une chaîne pour l'exécution ou un booléen pour les tests. En PHP 7, il peut s'agir d'une expression qui renvoie n'importe quelle valeur, et le résultat sera utilisé pour indiquer si l'assertion a réussi.
description
Si l'assertion échoue, la description de l'option sera incluse dans le message d'échec.
exception
En PHP 7, le deuxième paramètre peut être un objet Throwable au lieu d'une chaîne, qui sera levée si l'assertion échoue et que assert.exception est activé. Instance
<?php ini_set('zend.assertions', 0); assert(true == false); echo 'Hi!'; ?>Le résultat de sortie de l'exécution du programme ci-dessus est :Hi!
Outils d'IA chauds
Undress AI ToolImages de déshabillage gratuites
AI Clothes RemoverOutil d'IA en ligne pour supprimer les vêtements des photos.
Undresser.AI UndressApplication basée sur l'IA pour créer des photos de nu réalistes
Stock Market GPTRecherche d'investissement basée sur l'IA pour des décisions plus intelligentes
Article chaud
Comment utiliser l'amélioration de la parole AI dans Premiere ? (Guide de nettoyage audio) 1 Il y a quelques mois By 下次还敢Comment migrer correctement les événements glisser-déposer de jQuery vers JavaScript natif 4 Il y a quelques semaines By DDDQu'est-ce que « EVM » ? L'importance de la machine virtuelle Ethereum 1 Il y a quelques mois By DDDLa mise à niveau du Bloc-notes, YouTube TV moins cher et le nouveau propriétaire de Nova Launcher : résumé de l'actualité 3 Il y a quelques semaines By DDDComment définir dynamiquement une valeur de profondeur arbitraire d'un tableau imbriqué en PHP 1 Il y a quelques mois By DDD
Sujets chauds
Outil populaire
Bloc-notes++7.3.1Éditeur de code facile à utiliser et gratuit
SublimeText3 version chinoiseVersion chinoise, très simple à utiliser
Envoyer Studio 13.0.1Puissant environnement de développement intégré PHP
Dreamweaver CS6Outils de développement Web visuel
SublimeText3 version MacLogiciel d'édition de code au niveau de Dieu (SublimeText3)
-












![Premiers pas avec le développement pratique PHP : création rapide de PHP [Small Business Forum]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)









