Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Funções exit ou die
  2. Função trigger_erro
  3. Função set_error_handler
  4. Funções debug_print_backtrace e debug_backtrace
  5. Função error_log

A linguagem PHP possui algumas funções nativas para gerenciarmos erros em nossas aplicações para exibição de mensagens, função handler de erro do usuário entre outras.

Nesta parte do tutorial vamos estudar as funções exit, die, trigger_erro, set_error_handler, error_log, debug_print_backtrace e debug_backtrace.

As funções die e exit são utilizadas para exibição de mensagens de erro com posterior encerramento de um script.

Sintaxe
die(string $message): void
exit(string $message):void
Onde
$message: mensagem a ser exibida

Exemplo 1
<?php
    $var1 = 1;
    $var2 = 0;
    
    if($var2 == 0)
    	exit("Erro!: Divisão por zero detectada\n");
    
    echo $var1/$var2;
?>
Saída
Erro!: Divisão por zero detectada

Outra forma de exibição de mensagem de erro do usuário é com uso da função trigger_error que por padrão não interrompe a execução do script.

Sintaxe
trigger_error(string $message, int $error_level = E_USER_NOTICE): bool
Onde
$message: mensagem de erro ou aviso.
$error_level: nível do erro. Padrão E_USER_NOTICE

Alguns valores aceitos mais comuns para $error_level:
E_USER_ERROR:   Mensagem de erro customizada. Execução interrompida.	 
E_USER_WARNING: Mensagem de warning customizada pelo usuário. Continua execução
E_USER_NOTICE:  Mensagem de aviso customizada pelo usuário. Continua execução 
E_USER_DEPRECATED: Mensagem de depreciação. Continua execução 
Retorno
true(1) se $error_level válido for informado, false(0) caso contrário.
Exemplo 2
<?php
    $valor = -1;

    if ( $valor < 0)
    	trigger_error("valor não pode ser < 0",E_USER_ERROR);
    else
    	echo "ok";
    
    echo "continuando";
?>
Saída
Fatal error: valor não pode ser < 0 in main.php on line 5

Uma outra forma para exibição de mensagem de erro é utilizando a função set_error_handler que recebe como argumento uma função customizada criada pelo usuário.

Sintaxe: set_error_handler
set_error_handler(?callable $callback, int $error_levels = E_ALL): ?callable

A função de erro customizada do usuário deve obrigatóriamente possuir o protótipo ou assinatura como declarado abaixo:

Sintaxe: função customizada
nome_funcao_callback($errno, $errstr, $errfile, $errline){/*corpo*/}
Onde
$nome_funcao_callback: função customizadado passada como argumento 
$errno: número do erro
$errstr: mensagem de erro
$errfile: arquivo onde o erro ocorreu
$errline: linha onde ocorreu o erro
Exemplo 3
<?php
	function erro_customizado($errno, $errstr, $errfile, $errline){
		echo "erro_customizado:",$errstr,"\n";
	}
	set_error_handler("erro_customizado");
	trigger_error("Um mensagem de erro qualquer");
    echo "continuando";
?>
Saída
erro_customizado:Um mensagem de erro qualquer
continuando

Para recuperarmos as informações do último erro ocorrido, utilizamos a função error_get_last que retorna um array/vetor contendo essas informações.

Sintaxe: set_error_handler
error_get_last(): array
Onde
-
Retorno
Vetor associativo contendo as informações do último erro: 
type(tipo), message(mensagem), file(arquivo) e line(linha).
Exemplo 4
<?php
	trigger_error("um erro qualquer");
	var_export(error_get_last());
?>
Saída
Notice: um erro qualquer in main.php on line 3
array (
  'type' => 1024,
  'message' => 'um erro qualquer',
  'file' => 'main.php',
  'line' => 3,
)

Utilizando a função debug_print_backtrace, podemos visualizar a pilha de chamadas de funções ou métodos até o momento que um erro ocorre. Assim, o rastreio dos erros em nossas aplicações podem ser melhor verificados.

Sintaxe
debug_print_backtrace(int $options = 0, int $limit = 0): void
Onde
$limit: número de linhas imprimidas
$options: Ignorar não as informações sobre função/método e argumentos. 
Alguns valores aceitos para $options:

DEBUG_BACKTRACE_IGNORE_ARGS: Ignorar informaçõess
Exemplo 5
<?php
	trigger_error("um erro qualquer");
	var_export(error_get_last());
?>
Saída
#0 main.php(6): funcao3()
#1 main.php(3): funcao2()
#2 main.php(12): funcao1()

Para recuperar essas informações da saída em formato array associativo, utilizamos a função debug_backtrace:

Sintaxe:
debug_backtrace(int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit = 0): array
Onde
$limit: Número de chamadas na pilha para retornar. Valor padrão 0 para imprimir toda pilha de chamadas.
$options: inteiro contendo as flags:
DEBUG_BACKTRACE_PROVIDE_OBJECT: Popular object co informações
DEBUG_BACKTRACE_IGNORE_ARGS: Omitir argumentos
Retorno
array associativo contendo a pilha de execução no formato chave-valor abaixo:

file: nome do arquivo(string)
line: linha da chamada(int)
function: nome da função/método(string)
args: array contendo argumentos
Exemplo 6
<?php
function funcao1($param) {
    var_export(debug_backtrace());
}
funcao1();
?>
Saída
array (
  0 => 
  array (
    'file' => 'man.php',
    'line' => 5,
    'function' => 'funcao1',
    'args' => 
    array (
      0 => 'parametro',
    ),
  ),
)
)
  1. 22/08/2025 - revisão 4 - Ajustes: pontuais e sintaxes
  2. 20/09/2024 - revisão 3 - Ajustes gramaticais
  3. 03/09/2024 - revisão 2 - Correção em link de objetivo: trigger_erro
  4. 06/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  5. 20/09/2023 - versão inicial