quarta-feira, 23 de junho de 2010

[PHP] Guia prático do uso de Exceções

Vamos conhecer as Exceções, um recurso interessante implementado no PHP 5, muito difundido em linguagens orientadas a objeto.

O tratamento de exceções é uma forma muito útil de gerenciar os possíveis erros previamente identificados na utilização do seu sistema, fazendo a lógica de funcionamento de uma rotina não ser comprometida caso apresente algum parâmetro não aceito para a continuidade correta do programa.

Lembra daquela velha frase, “Para toda regra, existe uma exceção”? O pensamento é semelhante para o PHP, iremos criar uma exceção à regra!
Antes de partirmos para o exemplo prático, vamos conhecer as palavras reservadas do PHP utilizadas no tratamento de exceções:

throw – Dispara uma Exceção
catch – Pega uma Exceção que tenha sido disparada
try – Delimitador do código que pode conter um gatilho que dispara Exceções

Isso tá muito confuso, não?

Que nada! Vamos ver agora o exemplo prático!

Destrinchando o código!

A lógica é a seguinte: Há um concurso e só deve participar quem possui 18 anos ou mais, logo, identificamos um possível erro caso algum participante menor de idade tente concorrer. O sistema deve estar preparado para tratar esta exceção sem que isto afete a linearidade do nosso código. Sendo assim, disparamos uma exceção que “diz” ao PHP que uma das regras de funcionamento do sistema não foi respeitada.

Criei uma função chamada Concurso, que recebe como parâmetro o Nome e a Idade do participante. Caso a Idade seja menor que 18, é disparada uma exceção utilizando a palavra reservada throw.

Exception é um modelo de classe do PHP 5 que trata exclusivamente de exceções, por isso utilizamos a frase “throw new Exception”, seguido entre parênteses da mensagem personalizada que representa a exceção.

* Para saber mais sobre a palavra reservada new, clique aqui

Os principais métodos do objeto Exception, são:

getMessage() – Mensagem da exceção
getCode() – Código da exceção
getFile() – Arquivo gerador da exceção

Como sabemos que a função Concurso pode disparar uma exceção, devemos utilizá-la dentro do bloco try. Para cada bloco try deve existir um bloco catch, que tem o objetivo de tratar a exceção disparada (objeto Exception) e “jogar” para uma variável de nossa escolha, em nosso caso, a variável $erro.

No caso de uma exceção ser disparada dentro de um bloco try, o código é interrompido imediatamente e o bloco catch entra em ação, transformando a variável $erro em uma instância do objeto Exception.

Legal, né?

O conteúdo do código de exemplo é uma utilização extremamente simples e para fins didáticos do uso de exceções. Por se tratar de um objeto, a classe Exception pode ser herdada e ter variações para tratamentos distintos, bem como uso aninhado de catchs (exceções disparando exceções), entre outras possibilidades.

Tente utilizar o conhecimento adquirido aqui para fazer uma validação de formulário, que é um exemplo igualmente simples e de fácil execução.

Para saber mais sobre o assunto, acesse o manual de Exceções do PHP.net clicando aqui

por: Vinícius Vinhas

em: Guia do PHP



Nenhum comentário:

O Curso

O Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas das Faculdades Integradas Simonsen - FIS, é um curso presencial, reconhecido pela Portaria 1.003 de 12.07.1993 (D.O.U. 13.07.1993), com carga horária mínima de 2.334 horas, que poderão ser cumpridas em no mínimo 03 anos (06 semestres letivos) e foi recentemente aditado pela Portaria nº 281, 29 de setembro de 2009, publicada no D.O.U nº 188, de 01 de outubro de 2009, Seção 1, página 19.
Os graduados nos Cursos Superiores de Tecnologia denominam-se tecnólogos, são profissionais de nível superior com formação para a produção, inovação científico-tecnológica e para a gestão de processos de produção de bens e serviços.

Faculdades Integradas Simonsen