ArithmeticError en PHP 7

La clase ArithmeticError aborda los resultados posiblemente defectuosos de realizar operaciones matemáticas. PHP lo usa para dos situaciones: desplazamiento de bits por un número negativo o llamada intdiv() con un dividendo de PHP_INT_MIN y un divisor de -1.
La clase ArithmeticError no tiene métodos propios; todos se heredan de la clase de error principal, según la siguiente sinopsis de la clase:

ArithmeticError extends Error {
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)
}

El siguiente ejemplo demuestra el bloque try … catch con ArithmeticError que se lanza por un cambio negativo de bit por un número negativo:

<?php
try {
$value = 5 << -1;
} catch (ArithmeticError $e) {
echo 'Caught: ' . $e->getMessage();
}

El resultado es el siguiente:

Caught: Bit shift by negative number

El siguiente ejemplo demuestra el bloque try … catch con ArithmeticError que se lanza por invocar intdiv() con un dividendo de PHP_INT_MIN y un divisor de -1:

<?php
try {
intdiv(PHP_INT_MIN, -1);
}
catch (ArithmeticError $e) {
echo 'Caught: ' . $e->getMessage();
}

El resultado es el siguiente:

Caught: Division of PHP_INT_MIN by -1 is not an integer

Comparte