Exceptions – Tratamento de Exceções

Olá internautas e leitores do Blog. Hoje falarei de tratamentos de exceções utilizando as Exceções (Exceptions), que o PHP dá suporte a partir de sua versão 5. Se você tem dificuldades ou simplesmente não entende como funciona, hoje você aprenderá!

SOBRE AS EXCEPTIONS

Em muitos projetos que participei notei que poucos desenvolvedores utilizam este recurso, que em minha opinião, é de extrema importância para vida de uma aplicação. Vamos ver a definição do PHP sobre esse cara:

PHP 5 tem um modelo de exceção similar ao de outras linguagens de programação. Uma exceção pode ser disparada ou pega.
php.net

Seguindo ao pé da letra a definição da documentação, utilizaremos as exceções em duas situações: para disparar e/ou para capturá-las.

DISPARANDO EXCEÇÕES

Para dispararmos uma exceção no php, utilizamos a palavra reservada throw seguindo com a instanciação de uma classe filha de Exception ou instanciação da própria pai Exception. Vamos ver um pequeno exemplo de utilização:

Caso a nossa variável $salario for menor que zero, ou negativa, será disparado um exceção com a mensagem “Informe um valor positivo.”. Caso esta exceção seja disparada, o interpretador PHP lançará a mensagem no seguinte formato:

Fatal error: Uncaught exception ‘Exception’ with message ‘Informe um valor positivo.’
Tradução: Erro Fatal: Exceção ‘Exception’ não capturada com a mensagem ‘Informe um valor positivo.’

Aqui notamos que a exceção foi dispara com sucesso! Porém, a forma de como a mensagem foi mostrada não está muito agradável. Já imaginou se um cliente seu (que é baita leigo em desenvolvimento) visualiza uma mensagem desta em sua aplicação ou site?

Para isso que temos como pegar esses caras e colocá-los em seu devido lugar, vamos ver abaixo:

CAPTURANDO EXCEÇÕES

Antes de falar de como capturar uma exceção, irei mostrar aqui os métodos da classe Exception do PHP (para mais detalhes, veja na documentação da classe):

  • __construct(string $message=NULL, int code=0) – O método construtor possui 2 parâmetros não obrigatórios, porém, é de grande importância sempre colocar uma mensagem, como no exemplo anterior;
  • getMessage() – retorna a mensagem da exceção;
  • getCode() – retorna o código da exceção;
  • getFile() – retorna o arquivo e a linha em que foi disparado a exceção;
  • getTrace() – retorna um Array com a(s) rota(s) até onde foi disparado a exceção;
  • getTraceAsString() – retorna uma string com a(s) rota(s) até onde foi disparado a exceção;

Como na maioria das outras linguagens de programação, para pegarmos uma exceção utilizamos um bloco chamado try – catch. Vejamos o código abaixo:

TÁ TÁ…MUITO LEGAL E TUDO, MAS ME MOSTRE QUANDO UTILIZAR EXCEÇÕES

Ótima ideia jovem guerreiro padawan, vamos a um exemplo prático para fixar esse tal de Exception. Primeiro criaremos uma classe chamada MeuException, que simplesmente extenderá a classe Exception do PHP para caso precisarmos sobrecarregar os métodos da classe Exception futuramente:

Agora, criaremos uma classe chamada Pessoa que tem o seguinte escopo:

Definimos alguns atributos relacionado a uma pessoa e um método chamado imprimirDados(). Esse método apenas imprimirá as informações de uma pessoa caso os mesmos não sejam nulos. Vamos testar!

Em um arquivo chamado index.php, iremos fazer o seguinte:

Desta forma, será capturado um Exception no formato que está dentro do bloco catch.

Bom, acho que é isso! Tentei ser o mais claro possível no que se diz respeito a tratamento de erros com exceções.

Qualquer dúvida, crítica, angústia, dor, sofrimento ou qualquer outro tipo de manifestação, não deixem de comentar aqui no artigo!

Um forte grande abraço a todos e bons estudos!

Kilderson Sena

Empreendedor, Experiente Analista e Desenvolvedor de Sistema e Líder de Equipes. Micro Empresário no ramo de Tecnologia, mas precisamente nos mercados de Desenvolvimento WEB, Desktop e Mobile.

Deixe uma resposta

This site uses Akismet to reduce spam. Learn how your comment data is processed.