Recuerda que PHP es un lenguaje multiparadigma, cuando inició no tenía soporte para excepciones ni nada orientado a objetos, eso se agregó después, por lo que los errores del core de PHP no muestran excepciones, si no FATAL_ERRORS o Warnings como el que pones, no puedes cachar ese tipo de errores en un bloque try/catch.
Tendrías que hacer un wrapper, como una clase math:
Código PHP:
Ver originalclass Math
{
public static function divide($num1, $num2)
{
if ($num2 === 0) {
throw new \DomainException('Division by zero');
}
return $num1 / $num2;
}
}
try {
Math::divide(1, 0);
} catch (Exception $e) {
echo "hubo un error";
}