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