English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriais Básicos do PHP

Tutoriais Avançados do PHP

PHP & MySQL

Manual de Referência do PHP

Uso e Exemplos da Função set_error_handler() do PHP

Manual de Referência de Erros e Loggings do PHP

A função set_error_handler() define a função de tratamento de erro personalizada.

Sintaxe

mixed set_error_handler (callback $error_handler[, int $error_types]);

Definição e uso

Definir a função do usuário (error_handler) para lidar com erros ocorridos no script.
Esta função pode ser usada para lidar com erros em execução de acordo com sua definição, por exemplo, quando um erro grave ocorre no aplicativo ou um erro é acionado em condições específicas (usando trigger_error()), você precisa de dados/Limpar e reciclar o arquivo.
É importante lembrar que os tipos de erros especificados em error_types绕过 o tratamento de erro padrão do PHP, a menos que a função de callback retorne FALSE. A configuração de error_reporting() não terá efeito e sua função de tratamento de erro continuará a ser chamada - no entanto, você ainda pode obter o valor atual de error_reporting e tratá-lo apropriadamente. É necessário prestar atenção especial aos erros com @ error-Quando uma instrução com prefixo de operador de controle ocorrer um erro, este valor será 0.
Atenção, você tem a responsabilidade de usar die() quando necessário. Se o programa de tratamento de erros retornar, o script continuará a executar a linha seguinte onde o erro ocorreu.
Os seguintes níveis de erro não podem ser tratados por funções definidas pelo usuário: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING e a maioria dos E_STRICT gerados no arquivo onde a função set_error_handler() foi chamada.
Se o erro ocorrer antes da execução do script (por exemplo, durante o upload de arquivos), o programa de tratamento de erro personalizado não será chamado porque ele ainda não estava registrado naquele momento.

Parâmetro

NúmeroParâmetros e descrição
1

error_handler (obrigatório)

Ela especifica a função que será executada ao ocorrer um erro. A seguir está a sintaxe do error_handler.

2

error_types (opcional)

Ela especifica em qual nível de relatório de erro o erro definido pelo usuário será exibido. O valor padrão é “E_ALL”. Para os níveis possíveis de relatório de erro, consulte “Constantes de erros e logs do PHP:”.

Função de tratamento de erros de sintaxe

error_function(error_level, error_message, error_file, error_line, error_context);

Esta é a descrição do parâmetro paramenter-

  • errno  -  O primeiro parâmetro errno, contém o nível do erro, é um inteiro.

  • errstr  -  O segundo parâmetro errstr, contém a mensagem do erro, é uma string.

  • errfile - O terceiro parâmetro é opcional, errfile, contém o nome do arquivo onde o erro ocorreu, é uma string.

  • errline - O quarto parâmetro é opcional, errline, contém o número da linha onde o erro ocorreu, é um inteiro.

  • errcontext - O quinto parâmetro opcional, errcontext, é um array que aponta para a tabela de símbolos ativa no momento do erro. Isso significa que errcontext contém um array com todas as variáveis dentro do escopo onde o erro foi acionado. O manipulador de erro do usuário não deve modificar o contexto do erro.

Retorno

 Se um manipulador de erro foi definido anteriormente, retorna uma string com o nome do programa; se for um manipulador de erro integrado, retorna NULL. Se você especificar uma função de callback inválida, também retornará NULL. Se o manipulador de erro anterior for um método de classe, esta função retornará um array indexado com o nome da classe e do método.

Exemplo online

A seguir está a utilização da função set_error_handler:

<?php
   function customError($errno, $errstr, $errfile, $errline) {
      echo "Erro personalizado: [$errno] $errstr\n";
      echo "Erro na linha $errline no arquivo $errfile\n";
      echo "Ending Script";
      
      die();
   }
   
   //Definir manipulador de erro
   set_error_handler("customError");
   $test = 0;
   
   //acionar erro
   if ($test >  -1) {
      trigger_error("Erro personalizado acionado");
   }
?>
Teste e veja‹/›

Resultados de saída:

Erro personalizado: [1024Foi acionado um erro personalizado. Erro na linha 16 
in /home/cg/root/1531703/main.php 
Ending Script