Errors e Exceptions PHP

Capa Curso PHP
Tempo de leitura: 4 minutos

Errors e Exceptions PHP: O gerenciamento de erros e exceções é crucial para a robustez e segurança de qualquer aplicação PHP. Um mecanismo de tratamento de erros bem implementado evita falhas inesperadas (os temidos crashes) e garante uma melhor experiência ao usuário.

Embora erros e exceções lidem com desvios no fluxo normal do programa, eles são tratados de maneiras distintas no PHP.

1. 🚨 Tipos de Erros Tradicionais em PHP

Os erros tradicionais do PHP são eventos baseados em nível de erro que o motor detecta.

Tipo de ErroNívelDescriçãoImpacto na Execução
Fatal ErrorsE_ERRORErros críticos (ex: chamar uma classe inexistente, require falho).Interrompe a execução do script imediatamente.
WarningsE_WARNINGAvisos não fatais (ex: chamar uma função com número incorreto de argumentos).O script continua a execução, mas pode gerar resultados inesperados.
NoticesE_NOTICEErros de runtime não críticos (ex: usar uma variável que não foi definida).O script continua a execução, servem para debugging.
Parse ErrorsE_PARSEErros de sintaxe que impedem o script de ser lido (ex: ponto-e-vírgula faltando).Interrompe a execução antes de iniciar.

Configurações de Relatório de Erros

Duas diretivas são cruciais para controlar a exibição e o registro de erros:

DiretivaDescriçãoUso Típico
error_reportingDefine quais tipos de erros serão reportados.Desenvolvimento: error_reporting(E_ALL);
display_errorsDefine se os erros serão exibidos na tela para o usuário.Desenvolvimento: ini_set('display_errors', 1); Produção: ini_set('display_errors', 0);

PHP

<?php
// Configuração ideal para AMBIENTE DE DESENVOLVIMENTO
error_reporting(E_ALL); // Reporta todos os erros, avisos e notices
ini_set('display_errors', 1); // Exibe os erros na tela
?>

2. 🛡️ Exceções: Tratamento Elegante (try-catch)

As Exceções são objetos que representam uma falha ou condição excepcional. Elas permitem que o código de erro seja lançado (throw) e capturado (catch) de forma estruturada, isolando o tratamento de falhas da lógica de negócio.

Estrutura try-catch

BlocoPropósito
tryEnvolve o código onde o erro é esperado. Se uma exceção for lançada, o script imediatamente salta para o bloco catch.
catchCaptura a exceção lançada (Exception ou uma classe que a herda) e executa o código de tratamento (ex: logar o erro, exibir mensagem amigável).

Exemplo de Uso de Exceção

PHP

<?php
function dividir($numerador, $denominador) {
    if ($denominador == 0) {
        // Lança uma exceção do tipo Exception
        throw new Exception("Divisão por zero não permitida!");
    }
    return $numerador / $denominador;
}

try {
    $resultado = dividir(10, 0); // Isso lançará a exceção
} catch (Exception $e) {
    // A exceção é capturada aqui.
    echo "Erro capturado: " . $e->getMessage(); // Saída: Erro capturado: Divisão por zero não permitida!
}
?>

Bloco finally

O bloco finally é opcional e seu código é executado sempre, independentemente de uma exceção ter sido lançada ou capturada. É ideal para tarefas de limpeza (ex: fechar conexão com banco de dados ou arquivos).

PHP

try {
    // ...
} catch (Exception $e) {
    // ...
} finally {
    echo "Fim da operação, recursos liberados.";
}

Hierarquia de Exceções Personalizadas

Criar suas próprias classes de exceção (class MinhaExcecao extends Exception {}) permite que você capture e trate diferentes tipos de problemas de maneira mais específica. O PHP 7 introduziu a interface base Throwable, que é a raiz de todos os Error (erros fatais) e Exception (erros de programação).

3. ✅ Boas Práticas para Tratamento de Erros

  1. Isolar o Risco: Use try-catch para envolver apenas o código que você sabe que pode falhar (ex: operações de I/O, conexões com banco de dados).
  2. Logar, Não Exibir em Produção: Em ambientes de produção, desative display_errors. Em vez disso, use error_log ou uma biblioteca dedicada para logar os detalhes técnicos do erro (stack trace) em um arquivo, para que a equipe de desenvolvimento possa analisá-los posteriormente.
  3. Classes Customizadas: Use exceções personalizadas para categorizar falhas e ter blocos catch mais direcionados (ex: catch (DatabaseException $e)).
  4. Capturar Erros Fatais (PHP 7+): O PHP 7+ permite capturar a maioria dos erros fatais (E_ERROR) usando try...catch via a interface Throwable.

✅ Conclusão Errors e Exceptions PHP

Errors e Exceptions PHP: O tratamento de erros e exceções é vital para a criação de sistemas confiáveis. Enquanto a correta configuração de error_reporting e display_errors gerencia os erros tradicionais do PHP, o uso de try-catch-finally com a classe Exception (e suas classes personalizadas) é o padrão moderno e elegante para isolar, capturar e tratar falhas de forma organizada, garantindo a resiliência e a segurança de sua aplicação.

Toda jornada tem um início, e o início para se tornar um desenvolvedor back-end é dominar as seguintes tecnologias, que você encontra aqui mesmo:

SQL
SQL
Capa Curso PHP
PHP
Laravel
Laravel

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.