Disparando erros personalizados com trigger_error()

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

Prefácio

Bem, amigos do PHPit, estamos aqui de volta para mais uma coluna (está aumentando a periodicidade, hein?). Hoje o assunto é um pouco desconhecido para alguns, mas pode estar manjado para outros.

Vou ser breve e suscinto, porque afinal de contas, meu tempo também é escasso!

Você já deve conhecer as mensagens de erro do PHP de longa data. Os famosos “Warnings” e “Fatal Errors” que insistem em aparecer nos scripts dos iniciantes (e de muitos veteranos também! :P).

O objetivo deste tutorial é explicar como lançar mensagens de erros de dentro do PHP fazendo com que elas se comportem da mesma maneira que as mensagens de erro do próprio.

A função se chama trigger_error()

Mão na massa

Para lançar um erro, é muito simples. Basta você saber a mensagem que quer mostrar na tela e o nível dela.
A tabela de erros pode ser encontrada aqui.

Porém você só usara os níveis de erro para usuário: E_USER_ERROR (256), E_USER_WARNING (512) e E_USER_NOTICE (1024).

O seguinte código

[php][/php]
gera a seguinte saída

Fatal error: Deu pau in /var/www/phpit/trigger.php on line 2

Agora vamos descobrir qual é a finalidade de cada um:

E_USER_ERROR: Irá lançar um “Fatal error”. Este tipo de erro para o script (assim como die ou exit). Geralmente utilizado quando uma condição obrigatória não é satisfeita.

E_USER_WARNING: Lança um “Warning”. Este tipo de aviso é utilizado quando ocorre um erro que não compromete o total funcionamento do script.

E_USER_NOTICE: Lança um “Notice”. Utilizado apenas para informar o usuário de algum evento inesperado durante a execução do script.

Conclusão

Utilizar esta função para disparar os erros da sua aplicação pode ser bem interessante. Estudando outros métodos de implementação, pode tornar-se uma ferramenta cada vez mais útil.
Caso você tenha alguma sugestão de implementação ou algum comentário a fazer a respeito desta função, fique a vontade para entrar em contato.

Um grande abraço e fiquem com Deus!