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 sous forme d'exceptions Erreur.

Cette exception d'erreur peut être interceptée 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 tel que catch (Exception $e) { ... } ne peut pas intercepter Error. Vous pouvez détecter une erreur en utilisant un code tel que catch (Error $e) { ... } ou en enregistrant un gestionnaire d'exceptions (set_exception_handler()).

Hiérarchie des exceptions d'erreur

  • Erreur
    • ArithmeticError
    • AssertionError
    • DivisionByZeroError
    • ParseError
    • TypeError
  • 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 l'exécution du programme ci-dessus est :

Modulo par zéro