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 Erro | Nível | Descrição | Impacto na Execução |
| Fatal Errors | E_ERROR | Erros críticos (ex: chamar uma classe inexistente, require falho). | Interrompe a execução do script imediatamente. |
| Warnings | E_WARNING | Avisos 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. |
| Notices | E_NOTICE | Erros 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 Errors | E_PARSE | Erros 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:
| Diretiva | Descrição | Uso Típico |
error_reporting | Define quais tipos de erros serão reportados. | Desenvolvimento: error_reporting(E_ALL); |
display_errors | Define 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
| Bloco | Propósito |
try | Envolve o código onde o erro é esperado. Se uma exceção for lançada, o script imediatamente salta para o bloco catch. |
catch | Captura 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
- Isolar o Risco: Use
try-catchpara envolver apenas o código que você sabe que pode falhar (ex: operações de I/O, conexões com banco de dados). - Logar, Não Exibir em Produção: Em ambientes de produção, desative
display_errors. Em vez disso, useerror_logou 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. - Classes Customizadas: Use exceções personalizadas para categorizar falhas e ter blocos
catchmais direcionados (ex:catch (DatabaseException $e)). - Capturar Erros Fatais (PHP 7+): O PHP 7+ permite capturar a maioria dos erros fatais (
E_ERROR) usandotry...catchvia a interfaceThrowable.
✅ 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:
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:












