Sencillo no es, pero aquí te dejo la única solución que se me ocurre.
Código PHP:
function error_propio($error_no, $error_str, $error_file, $error_line) {
if (error_reporting() == 0) return;
// diferentes tipos de error
switch($error_no) {
case E_NOTICE:
return;
break;
case E_USER_NOTICE:
$continue = TRUE;
$type = "Notice";
break;
case E_USER_WARNING:
case E_WARNING:
$continue = TRUE;
$type = "Warning";
break;
case E_USER_ERROR:
case E_ERROR:
$type = "Fatal Error";
break;
default:
$type = "Unknown Error";
break;
}
// ponemos el error en el log
error_log("[".date("d-M-Y H:i:s")."] PHP $type: $error_parts[0] error in line $error_line of file $error_file", 0);
if ($error_str == "Division by zero") {
// AQUI ES DONDE PUEDES HACER LO QUE QUIERAS SI ES DIVISION BY ZERO
}
else { // si es otro, mostramos el error
echo "\n<div>".nl2br($error_str)."</div>\n";
}
if (!isset($continue)) exit();
}
// ponemos nuestra funcion como error handler principal
set_error_handler("error_propio");
Cuidado con esto ya que esta funcion se salta todo el error handler de PHP, asi que asegurate que puede manejar todo tipo de errores. Mas o menos este que te pongo es como el de PHP pero no lo he probado con determinados tipos de errores.
Suerte