В старых версиях PHP деление на ноль никакое не исключение, а обычная ошибка.
О чем
ясно написано в выводимом сообщении:
Warning: Division by zero in ...
Чтобы перехватывать ошибки, их надо конвертировать в исключения. В простейшем варианте
set_error_handler(function ($level, $message, $file = '', $line = 0)
{
throw new ErrorException($message, 0, $level, $file, $line);
});
После установки такого обработчика все ошибки будут автоматически конвертироваться в исключения, и соответственно могут быть пойманы через try..catch:
Fatal error: Uncaught ErrorException: Division by zero