Tratando exceções com PHP

Categoria: PHP
Publicado em 14 de Junho de 2011

As exceções são uma funcionalidade bastante recente no PHP.

O formato é o seguinte:

1
2
3
4
5
6
7
try {
 
    // Seu código
 
} catch(Exception $e) {
    die('Erro');
}

A idéia é que qualquer código que esteja entre o try/catch "lance" exceções que mais tarde deverão ser "capturadas" por um catch qualquer.

As exceções são lançadas pela instrução interna "throw new":

1
throw new Exception('Mensagem de erro');

As exceções podem ser diferenciadas através da criação de classes que estendam a classe base "Exception":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class MinhaExcecao extends Exception {
   protected $message = 'Descrição da Exceção';
   protected $code = 100;
}
 
$var = 1;
 
try {
 
    if ($var == 1)  
       throw new MinhaExcecao();
 
    if ($var == 2)
       throw new Exception();
 
} catch(MinhaExcecao $e) {
    echo $e->getMessage();
} catch(Exception $e) {
    echo "Erro desconhecido";
}

No exemplo acima, o bloco try/catch realiza tratamento de erros de de 2 tipos: MinhaExcecao e Exception. Se o segundo catch não existisse, o tratamento de erros não ocorreria neste ponto do código.

NOTA: é responsabilidade do programador ter um bloco try/catch mais externo que capture todas as exceções que podem ser lançadas. Caso contrário o PHP lançará um erro fatal que parará a aplicação. Caso o programador não queira encapsular todo o script num grande bloco try/catch, ele poderá optar por usar a função set_exception_handler(), informando o nome da função callback que deverá ser chamada para tratar exceções não capturadas.



} catch(MinhaExcecao $e) {
    echo $e->getMessage();
}
 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados