PHP 7 - Manejo de errores

Desde PHP 7, se ha cambiado el manejo y la generación de informes de errores. En lugar de informar errores a través del mecanismo de informe de errores tradicional utilizado por PHP 5, ahora la mayoría de los errores se manejan lanzando excepciones de error. De manera similar a las excepciones, estas excepciones de error aparecen hasta que alcanzan el primer bloque de captura coincidente. Si no hay bloques coincidentes, entonces un controlador de excepciones predeterminado instalado conset_exception_handler()sera llamado. En caso de que no haya un controlador de excepciones predeterminado, la excepción se convertirá en un error fatal y se manejará como un error tradicional.

Como la jerarquía de errores no se extiende desde Exception, el código que usa bloques catch (Exception $ e) {...} para manejar excepciones no detectadas en PHP 5 no manejará tales errores. Un bloque catch (Error $ e) {...} o unset_exception_handler() Se requiere handler para manejar errores fatales.

Ejemplo

<?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());
?>

Produce la siguiente salida del navegador:

Modulo by zero