DivisionByZeroError en PHP 7

La división por cero es una expresión matemática indefinida, al menos en aritmética elemental; por lo tanto, PHP necesitaba una forma de responder a tales casos. DivisionByZeroError se produce cuando intentamos dividir un número por cero.
La clase DivisionByZeroError no tiene métodos propios, todos se heredan de la clase primaria ArithmeticError, según la siguiente sinopsis de la clase:

DivisionByZeroError extends ArithmeticError {
final public string Error::getMessage (void)
final public Throwable Error::getPrevious (void)
final public mixed Error::getCode (void)
final public string Error::getFile (void)
final public int Error::getLine (void)
final public array Error::getTrace (void)
final public string Error::getTraceAsString (void)
public string Error::__toString (void)
final private void Error::__clone (void)
}

Debemos tener cuidado con la expresión que estamos usando para la división. Simplemente dividir el número de dividendo con el número de divisor 0 usando el operador / no dará el mismo resultado que usar la función intdiv(). Considere el siguiente fragmento de código:

<?php
try {
$x = 5 / 0;
}
catch (DivisionByZeroError $e) {
echo 'Caught: ' . $e->getMessage();
}

El ejemplo anterior no activará el bloque de captura DivisionByZeroError. En su lugar, se genera la siguiente advertencia.

PHP Warning: Division by zero

El uso de la función intdiv() en lugar del operador / activará el bloque catch como se muestra en el siguiente fragmento de código:

<?php
try {
$x = intdiv(5, 0);
}
catch (DivisionByZeroError $e) {
echo 'Caught: ' . $e->getMessage();
}

La función intdiv() genera la excepción DivisionByZeroError si el divisor es 0. Si el dividendo es PHP_INT_MIN y el divisor es -1, entonces se genera una excepción ArithmeticError, como se muestra en la sección anterior.

Comparte