Be careful emailing errors from a custom handler, as emailing on every page view can crush your system.O PHP retornará erros em resposta a inúmeras condições de erros internos. Eles podem ser utilizados para sinalizar inúmeras condições diferentes e podem ser exibidos e/ou registrados conforme a necessidade.
Cada erro que o PHP gera inclui um tipo. A lista destes tipos de erros está disponível, junto a uma breve descrição de seu comportamento e como podem ser causados.
   Se nenhum manipulador de erro for definido, o PHP tratará todos os que ocorrerem
   de acordo com sua configuração. Quais erros são reportados, e quais são
   ignorados é controlado pela diretiva
   error_reporting
   no php.ini, ou em tempo de execução, chamando a função
   error_reporting(). É altamente recomendável que esta
   diretiva de configuração seja definida, entretanto, alguns erros podem ocorrer antes
   da execução do script começar.
  
   Em um ambiente de desenvolvimento, deve-se sempre definir a diretiva
   error_reporting
   para E_ALL, para estar ciente, e corrigir,
   problemas informados pelo PHP. Em produção, deve-se definir para um nível
   menos verboso, como
   E_ALL & ~E_NOTICE & ~E_DEPRECATED, mas
   em muitos casos E_ALL também é apropriado, pois pode antecipar
   avisos de problemas em potencial.
  
   O que o PHP faz com estes erros depende de mais duas diretivas no php.ini.
   A diretiva display_errors
   controla se o erro será mostrado como parte da saída do script. Esta diretiva
   deve sempre estar desativada no ambiente de produção, já que pode incluir informações
   confidenciais como senhas do banco de dados, mas é útil
   habilitá-la em desenvolvimento, já que garante o reporte imediato de problemas.
  
   Além de mostrar os erros, o PHP pode logar erros quando a diretiva
   log_errors
   estiver habilitada. Isso logará qualquer erro para um arquivo ou para o syslog
   definido com a diretiva
   error_log. Pode
   ser extremamente útil no ambiente de produção, já que pode-se logar os erros
   que ocorrerem e então gerar relatórios baseados nestes erros.
  
Se o manipulador de erros padrão do PHP for inadequado, pode-se manipular diversos tipos de erro com manipuladores de erros próprios ao instalá-los com a função set_error_handler(). Embora alguns tipos de erros não possam ser manipulados desta maneira, aqueles que puderem, serão manipulados da forma que o script decidir: por exemplo, pode ser utilizado para exibir uma página de erro customizada ao usuário e reportar mais precisamente que por log, como enviando um e-mail.
Be careful emailing errors from a custom handler, as emailing on every page view can crush your system.