Manipulando erros em tempo de execução
Quando ocorre algum erro no código PHP, dependedo do error_reporting (http://br.php.net/manual/pt_BR/function.error-reporting.php), será impresso na tela mensagens pouco agradáveis para um usuário comum.
Utilizaremos a função set_error_handler do PHP (PHP 4 >= 4.0.1, PHP 5), para atribuirmos a uma função criada pelo desenvolvedor a responsabilidade de gerenciar as informações de erro.
A função do PHP:
mixed set_error_handler ( callback $error_handler [, int $error_types ] )
Como primeiro parâmetro informaremos o nome da função de callback que será chamada toda vez que um erro for gerado.
Esta função ao ser executada receberá os seguintes parâmetros:
Nível (integer): Nível de erro que aconteceu.
Mensagem (string): Mensagem de erro.
Arquivo (string): Nome do arquivo no qual o erro ocorreu.
Linha (integer): Número da linha na qual o erro ocorreu.
Contexto (string): É opcional e é uma matriz que aponta para a tabela de símbolos ativos no ponto aonde o erro ocorreu. Em outras palavras, irá conter uma matriz de cada váriavel que exista no escopo aonde o erro aconteceu. O manipulador de erro do usuário não deve modificar o contexto de erro.
Vamos a um exemplo:
Agora você pode determinar o comportamento para cada tipo de erro.
Pode se optar por apenas informar ao usuário que um erro foi gerado, mas a maior parte das informações técnicas, armazenar em um arquivo de Log no servidor.
Obs: Para que este tratamento seja aplicado em seu site ou sistema, deve ser feito em um arquivo o qual será incluido em todos os outros arquivos onde se necessita a manipulação de erros. Ex.: include_once('arqtrataerros.php').
Utilizaremos a função set_error_handler do PHP (PHP 4 >= 4.0.1, PHP 5), para atribuirmos a uma função criada pelo desenvolvedor a responsabilidade de gerenciar as informações de erro.
A função do PHP:
mixed set_error_handler ( callback $error_handler [, int $error_types ] )
Como primeiro parâmetro informaremos o nome da função de callback que será chamada toda vez que um erro for gerado.
Esta função ao ser executada receberá os seguintes parâmetros:
Nível (integer): Nível de erro que aconteceu.
Mensagem (string): Mensagem de erro.
Arquivo (string): Nome do arquivo no qual o erro ocorreu.
Linha (integer): Número da linha na qual o erro ocorreu.
Contexto (string): É opcional e é uma matriz que aponta para a tabela de símbolos ativos no ponto aonde o erro ocorreu. Em outras palavras, irá conter uma matriz de cada váriavel que exista no escopo aonde o erro aconteceu. O manipulador de erro do usuário não deve modificar o contexto de erro.
Vamos a um exemplo:
function trataErros($iNrNivelErro, $sMsgErro, $sArqErro, $iNrLinhaErro) { switch (iNrNivelErro) { case E_USER_ERROR: // Tratando cada tipo de erro break; case E_USER_WARNING: // Tratando cada tipo de erro break; } } set_error_handler('trataErros');
Agora você pode determinar o comportamento para cada tipo de erro.
Pode se optar por apenas informar ao usuário que um erro foi gerado, mas a maior parte das informações técnicas, armazenar em um arquivo de Log no servidor.
Obs: Para que este tratamento seja aplicado em seu site ou sistema, deve ser feito em um arquivo o qual será incluido em todos os outros arquivos onde se necessita a manipulação de erros. Ex.: include_once('arqtrataerros.php').
Novo Comentário: