PHP 7 - Gestione degli errori

Da PHP 7, la gestione e la segnalazione degli errori sono state modificate. Invece di segnalare gli errori tramite il tradizionale meccanismo di segnalazione degli errori utilizzato da PHP 5, ora la maggior parte degli errori viene gestita generando eccezioni di errore. Analogamente alle eccezioni, queste eccezioni di errore si espandono fino a raggiungere il primo blocco catch corrispondente. Se non ci sono blocchi corrispondenti, viene installato un gestore di eccezioni predefinito conset_exception_handler()sarà chiamato. Nel caso in cui non sia presente un gestore di eccezioni predefinito, l'eccezione verrà convertita in un errore irreversibile e verrà gestita come un errore tradizionale.

Poiché la gerarchia degli errori non è estesa da Exception, il codice che utilizza i blocchi catch (Exception $ e) {...} per gestire le eccezioni non rilevate in PHP 5 non gestirà tali errori. Un blocco catch (Error $ e) {...} o un fileset_exception_handler() il gestore è necessario per gestire gli errori irreversibili.

Esempio

<?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 il seguente output del browser:

Modulo by zero