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