Pular para o conteúdo

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.
Lorran Luiz luizhacker
Hits: 31.964 Categoria: PHP Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar

Parte 4: Estendendo e especificando exceções

Podemos tornar nossas exceções mais específicas e por consequência saber com mais precisão que tipo de erro ocorreu, manipulando-o assim da melhor maneira possível.

Usamos a palavra-chave extends para estender uma classe, ou seja, criar uma classe derivada (ou classe filha). Quando uma classe estende outra, ela herda da última atributos e métodos dependendo do nível de acesso de cada elemento que constitui o corpo da classe. A classe filha pode sobrecarregar métodos (redefiní-los).

Exception é uma classe que pode ser herdada, sendo assim podemos definir classes que derivem e aumentem sua funcionalidade, passando de uma simples exceção genérica para exceções mais precisas.

Exceções derivadas

Definamos algumas classes derivadas de Exception:

class DBException extends Exception {
    protected $variavel; //Uma variavel qualquer
    
    public function __construct($exceptionMessage, $errorCode = 0) {
        parent::__construct($exceptionMessage, $errorCode);
    }

    //Aqui vemos alguns métodos característicos da classe derivada de Exception
    public function getVariavel() {
        return $this->variavel_qualquer;
    }

    public function setVariavel($valor = NULL) {
        $this->variavel = $valor;
    }
}

class FopenException extends Exception {
    protected $arquivo; //Variável contendo o nome de um arquivo

    public function __construct($nomeDoArquivo, $exceptionMessage, $errorCode = 0) {
        parent::__construct($exceptionMessage, $errorCode);
        $this->arquivo = $nomeDoArquivo;
    }

    //Métodos característicos dessa classe
    public function getNomeDoArquivo() {
        return $this->arquivo;
    }

    public function exibirNomeDoArquivo() {
        echo "Nome do arquivo: {$this->arquivo}";
    }

}

   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

Servidor LAMP + PHPMyAdmin + Webalizer

Vulnerabilidade em formulário PHP

Pentesting on PHP apps: XSS

Criptografando mensagens com PHP

Criptografia do método GET no PHP

Autenticação de sites com PHP e MySQL

#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...
#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

Entre na sua conta para comentar.