PHP 7 - Gestion des erreurs

À partir de PHP 7, la gestion des erreurs et les rapports ont été modifiés. Au lieu de signaler les erreurs via le mécanisme de rapport d'erreur traditionnel utilisé par PHP 5, la plupart des erreurs sont désormais gérées en lançant des exceptions d'erreur. Semblables aux exceptions, ces exceptions d'erreur remontent jusqu'à ce qu'elles atteignent le premier bloc catch correspondant. S'il n'y a pas de blocs correspondants, alors un gestionnaire d'exceptions par défaut installé avecset_exception_handler()sera appelé. S'il n'y a pas de gestionnaire d'exceptions par défaut, l'exception sera convertie en erreur fatale et sera traitée comme une erreur traditionnelle.

Comme la hiérarchie des erreurs n'est pas étendue depuis Exception, le code qui utilise des blocs catch (Exception $ e) {...} pour gérer les exceptions non interceptées dans PHP 5 ne gérera pas de telles erreurs. Un bloc catch (Error $ e) {...} ou unset_exception_handler() handler est requis pour gérer les erreurs fatales.

Exemple

<?php
   class MathOperations {
      protected $n = 10;

      // Try to get the Division by Zero error object and display as Exception
      public function doOperation(): string {
         try {
            $value = $this->n % 0;
            return $value;
         } catch (DivisionByZeroError $e) {
            return $e->getMessage();
         }
      }
   }

   $mathOperationsObj = new MathOperations();
   print($mathOperationsObj->doOperation());
?>

Il produit la sortie de navigateur suivante -

Modulo by zero