Introdução a manipulação de erros em PHP

Abordaremos os pontos básicos na manipulação de erros em PHP. Humanos erram, um computador obviamente não é humano e por isso erros devem ser evitados ao extremo. E quando eles acontecerem seu sistema deve estar preparado para detectá-los e agir da melhor forma. A manipulação de erros dependerá mais do programador do que de qualquer outra coisa.

[ Hits: 30.052 ]

Por: Lorran Luiz em 22/01/2009 | Blog: http://lorranluiz.hostingtribe.com/


Situações de possíveis erros



Veremos a partir de então o básico quando o assunto é manipulação de erros. Com tal conhecimento o programador se capacitará a avançar no estudo de tratamento de erros e posteriormente aprender técnicas para tal.

Algumas situações

Suspeite de qualquer situação em que seu código fará algo decisivo para o funcionamento do seu sistema. Coisas como conectar a um banco de dados, abrir algum arquivo que contenha parâmetros importantes, carregar uma classe (ou uma biblioteca) essencial na aplicação ou armazenar alguma informação numa tabela de banco de dados, entre muitas outras situações requerem uma execução sem falhas e por isso deve haver uma preocupação maior com os erros que acontecerem.

Podemos dizer que em certas partes de seu código necessitaremos de "vigilantes" atentos a possíveis situações anormais. Veremos então quem são os vigilantes da programação no PHP.

Os "vigilantes"

Podemos rodear determinadas áreas de seu script com "vigilantes", que esperam que algo dê errado para passar o controle da situação aos seus "superiores".

Usamos a palavra-chave try para representar esses vigias virtuais no seu código fonte.

O try é seguido de um bloco de códigos no qual ele estará responsável por capturar eventuais erros. Os erros são denominados exceções, ou seja, situações que saem do esperado.

Sintaxe:

try {
//Código suspeito
}

Exceções

Em orientação a objeto, no PHP, exceções representam um objeto. Esse objeto necessita de um "molde" para ser construído, esse molde é denominado Classe e a classe usada para "modelar" uma exceção é a classe Exception.

Abaixo vemos a classe Exception:

<?php
class Exception {

  protected $message = 'Unknown exception'; // Mensagem da exceção
  protected $code = 0;                      // Código da exceção definido pelo usuário
  protected $file;                          // Arquivo gerador da exceção
  protected $line;                          // Linha geradora da exceção

  function __construct(string $message=NULL, int code=0);

  final function getMessage();              // Mensagem da exceção
  final function getCode();                 // Código da exceção
  final function getFile();                 // Arquivo gerador
  final function getTrace();                // um array com o backtrace()
  final function getTraceAsString();        // String formatada do trace

  /* Sobrecarregável */
  function _toString();                     // String formatada para ser mostrada

}
?>

A classe Exception não precisa ser inserida em seu código, ela é uma classe nativa do PHP introduzida no Zend 2.

Os "superiores"

Os "superiores" são aqueles que tem competência para fazer algo, devem resolver um problema ou passar essa responsabilidade para quem resolva. No PHP usamos a palavra-chave catch para representar esse superior.

O "catch" é responsável pela identificação do erro, ou seja, ele "sabe" qual o tipo de exceção ocorreu, de acordo com a classe, derivada de Exception, que "modelou" o objeto de exceção passado para ele.

O "catch" necessita de um parâmetro, o nome da classe Exception ou derivada seguida da variável que conterá o objeto da exceção e um bloco de código.

Sintaxe:

catch (Exception $variavel) {
//Código que manipulará tal exceção
}

A palavra-chave catch deve ser posicionada logo após o bloco de código rodeado pela cláusula try. Ficando então assim:

Sintaxe:

try { //Código suspeito } catch (Exception $variavel) { //Código que manipulará tal exceção }

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Situações de possíveis erros
   3. Preparando seu código para as exceções
   4. Estendendo e especificando exceções
   5. Um código básico com tratamento de erros
   6. Resumindo
Outros artigos deste autor

Servidor LAMP + PHPMyAdmin + Webalizer

Leitura recomendada

Pentesting on PHP apps: XSS

Autenticação de sites com PHP e MySQL

XSS - Um exemplo de ataque

Instalações PHP não seguras

Criptografando mensagens com PHP

  
Comentários
[1] Comentário enviado por matux em 22/01/2009 - 16:46h

Bom Artigo, com certeza muito útil.
Já vou fazer uns testes!
Parabéns!

[2] Comentário enviado por luizhacker em 22/01/2009 - 21:35h

Complementando...

Não é preciso necessariamente que para exibir informações através do objeto de exceção você digite $e->__toString(), pois o métodos especial __toString() é executado automaticamente quando o objeto é requisitado como string, ou seja, você só precisará indicar o próprio objeto. Veja:

echo nl2br("<b>{$e->getMessage()}</b>\n<br />Detalhes:\n$e"); //Exibir string contendo informações sobre a exceção

Um abraço!

[3] Comentário enviado por renato.leite em 23/01/2009 - 10:35h

Otimo artigo, ajuda bastante...

[4] Comentário enviado por albertguedes em 24/01/2009 - 02:28h

Cara, tá no favoritos.
valeu MEEEESMO hehehe.

Aparece ai no canal IRC do VOL

http://www.vivaolinux.com.br/artigo/Canal-IRC-do-VOL-Participe-voce-tambem

[5] Comentário enviado por everton3x em 29/01/2009 - 17:14h

Muito bom artigo!

Saiu da mesmisse de "como conectar ao banco de dados" ou de "como manipular arquivos com PHP".



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts