PHP 7 - Tratamento de Erros

No PHP 7, o tratamento de erros e relatórios foram alterados. Em vez de relatar erros por meio do mecanismo tradicional de relato de erros usado pelo PHP 5, agora a maioria dos erros são tratados lançando exceções de erro. Semelhante às exceções, essas exceções de erro borbulham até atingirem o primeiro bloco catch correspondente. Se não houver blocos correspondentes, um manipulador de exceção padrão instalado comset_exception_handler()será chamado. Caso não haja um manipulador de exceção padrão, a exceção será convertida em um erro fatal e será tratada como um erro tradicional.

Como a hierarquia de erro não é estendida de Exception, o código que usa blocos catch (Exception $ e) {...} para lidar com exceções não capturadas no PHP 5 não irá lidar com tais erros. Um bloco catch (Error $ e) {...} ou umset_exception_handler() handler é necessário para lidar com erros fatais.

Exemplo

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

Ele produz a seguinte saída do navegador -

Modulo by zero