O que são os métodos try, catch e finally em PHP?

O que são os métodos try, catch e finally em PHP?

13 de junho de 2020 0 Por Ramos de Souza Janones
Powered by Rock Convert

Neste artigo aprenda para que ser os métodos try, catch e finally em PHP, com exemplos práticos para melhor compreensão de sua utilização prática.

Bloco try/catch serve para tratamento de exceções, tratamento de códigos que podem não ser totalmente atendidos e gerarem alguma exceção/erro.

Método try em PHP

try consegue recuperar erros que possam ocorrer no código fornecido em seu bloco.

Método catch em PHP

O catch por sua vez faz o tratamento dos erros que aconteceram.

Exemplo:

try {
    //Esse código precisa de tratamento pois pode gerar alguma exceção
    $x = 1;
    if ($x === 1)
        throw new \Exception('X não pode ser 1');
} catch (\Exception $e) {
    var_dump($e->getMessage());
}

Método finally em PHP

Além disso também temos um bloco chamado finally (PHP 5.5 ou superior), que fornecem instruções do que deve ser executado após o try/catch (normalmente liberação de recursos). Caso uma exceção seja capturada, o finally será executado somente após o termino das instruções fornecidas no catch. Caso nenhuma exceção seja gerada, o finally será executado após as instruções fornecidas no try.

Exemplo:

try {
    //Esse código precisa de tratamento pois pode gerar alguma exceção
    $variavel = AlgumaCoisa::pegarRecurso();
    if ($variavel->executarAlgumaCoisa())
        throw new \Exception('Erro: ' . $variavel->pegarErro());
} catch (\Exception $e) {
    var_dump($e->getMessage());
} finally {
    $variavel->liberarRecurso(); 
}

Finalizando, erros gerados fora de um bloco try/catch, podem gerar mensagens inconvenientes aos usuários que utilizam seu sistema. Vamos a um exemplo:

Como vender Software - Seja desktop, web ou MobilePowered by Rock Convert
//Nada antes
throw new Exception('teste');
//Nada depois

Caso o código acima seja executado, vai gerar uma mensagem de erro muito bonita na tela

//Fatal error: Uncaught exception 'Exception' with message 'teste' in ...

Quando utilizar

Você irá utilizar este bloco quando você usar algum método que lance uma CheckedException e quando você quer dar algum tratamento a exception.

LEIA TAMBÉM:  TypeScript 3.5: Os novos recursos do TypeScript

Um bloco “try” é chamado de bloco “protegido” porque, caso ocorra algum problema com os comandos dentro do bloco, a execução desviará para os blocos “catch” correspondentes.

Necessitamos usar try, porque estamos fazendo operação de conversão, é uma maneira mais robusta de tratar possíveis erros no momento da conversão, por exemplo, não é possível converter um caractere “?” por um número, porém como a entrada de dados é liberada o usuário final poderá digitar algo inadequado, resultando em erro e quebra da execução do programa por falha, com o try podemos evitar esta queda brusca e então tratar o erro da melhor forma.

Sintaxe

A estruturação desses blocos obedece à seguinte sintaxe:

try {

// código que inclui comandos/invocações de métodos

// que podem gerar uma situação de exceção.

}

catch (XException ex) {

// bloco de tratamento associado à condição de

// exceção XException ou a qualquer uma de suas

// subclasses, identificada aqui pelo objeto

// com referência ex

}

catch (YException ey) {

// bloco de tratamento para a situação de exceção

// YException ou a qualquer uma de suas subclasses

}

finally {

// bloco de código que sempre será executado após

// o bloco try, independentemente de sua conclusão

// ter ocorrido normalmente ou ter sido interrompida

}

Onde XException e YException deveriam ser substituídos pelo nome do tipo de exceção. Os blocos não podem ser separados por outros comandos — um erro de sintaxe seria detectado pelo compilador Java neste caso. Cada bloco try pode ser seguido por zero ou mais blocos catch, onde cada bloco catch refere-se a uma única exceção.

LEIA TAMBÉM:  Desafios no desenvolvimento de APIs e IoT

O bloco finally, quando presente, é sempre executado. Em geral, ele inclui comandos que liberam recursos que eventualmente possam ter sido alocados durante o processamento do bloco try e que podem ser liberados, independentemente de a execução ter encerrado com sucesso ou ter sido interrompida por uma condição de exceção. A presença desse bloco é opcional.

Conclusão

Blocos de try/catch são blocos para tratar exceções que o programador não tem como prever que irão acontecer, erros em tempo de execução, que não há como o programador controlar, como por exemplo, o usuário perder a conexão com a internet. Esses comportamentos inesperados são tratados com o lançamento de exceções, essas exceções lançam erros, avisando que um comportamento inesperado aconteceu.

O bloco try/catch vai tratar essa parte “crítica” de código e tentar executá-lo, caso nenhum erro aconteça, o programa segue seu fluxo normal, senão ele entrará no bloco que se encontra dentro do catch para tratar o erro.

Em resumo, o try/catch serve para tratar comportamentos inesperados, entretanto ele é bem mais lento que controlar o fluxo de um programa com if/else, ou seja, deve ser utilizado preferencialmente quando o desenvolvedor não tem como garantir que aquele código será executado com sucesso.

Você está nas seções:  » Programação » PHP

Powered by Rock Convert
Siga os bons!
Últimos posts por Ramos de Souza Janones (exibir todos)
vote
Article Rating
LEIA TAMBÉM:  A importância das métricas para times ágeis