Gerencia os erros que podem ocorrer durante a execução de uma instrução por meio da estrutura try, catch, finally, permitindo capturar exceções e garantir a execução de código, mesmo em caso de falhas.


Figura 1 - Bloco Estrutura try, catch, finally

Compatibilidade

  • Bloco cliente: exception_trycatch()
  • Bloco servidor: exception_trycatch() - executado a partir da chamada do bloco cliente.

Retorno

O bloco não possui retorno. No entanto, se um erro ocorrer e uma exceção for gerada, a variável definida no parâmetro catch capturará e retornará essa exceção.

Características do bloco

Este bloco é utilizado para testar um fluxo de blocos contido na entrada de instrução try. Se um erro for detectado, o conteúdo contido em catch será executado antes que o conteúdo de finally seja processado.

Através do ícone de configuração do bloco, é possível definir quais as entradas de instruções serão utilizadas: apenas try, try-catch, try-finally ou try-catch-finally. Vale notar que não é permitido adicionar mais de uma entrada de instrução do mesmo tipo.


Figura 2 - Opção de configuração do bloco

Entrada de instrução try

A entrada de instrução try será sempre executada e serve para delimitar quais blocos da função serão tratados para possíveis erros. Se uma exceção for encontrada, o conteúdo da entrada de instrução catch será executado a seguir. Caso contrário, a execução prosseguirá para o conteúdo do bloco finally.

Entrada de instrução catch

A instrução catch será executada apenas se ocorrer um erro dentro do bloco try, permitindo o tratamento da exceção. Após o nome catch, há um espaço reservado para adicionar uma variável, que irá armazenar o conteúdo gerado pela exceção.


Figura 2.1 - Adicionando a variável que irá receber o erro gerado

Entrada de instrução finally

A instrução finally será sempre executada, permitindo que um bloco de código seja processado após a execução dos blocos try e/ou catch.

Parâmetros

try

Executa uma ação necessária da aplicação.

  • Posição: 1
  • Tipo: Comando sem retorno / No return command 
  • Exemplo: uso de uma variável com o bloco na lista

catch

Se uma exceção (erro) ocorrer no parâmetro try, o controle passa para o parâmetro catch, onde a exceção pode ser capturada e tratada de maneira apropriada.

  • Posição: 2
  • Tipo: Comando com retorno / Command with return
  • Exemplo: variável de exceção

finally

Executa uma ação independentemente de uma exceção ter sido capturada ou não.

  • Posição: 3
  • Tipo: Comando sem retorno / No return command 
  • Exemplo: uso do bloco imprime

Exemplo

Na função abaixo, inicialmente, a variável "lista" recebe uma lista com 2 posições. Em seguida, o bloco Estrutura try, catch, finally é iniciado. Na entrada de instrução try, a variável "resultado" tenta acessar o valor da posiçãoda lista, que não existe, o que gera uma exceção.  Essa exceção é capturada pela variável "excecao" da instrução catch.

Neste exemplo, a instrução catch imprime a mensagem "Ocorreu o erro: " concatenada com valor da variável "excecao". Para facilitar a visualização, exibimos apenas uma pequena parte da exceção. Por fim, a instrução finally imprime no console do depurador a frase "O valor da posição 5 é: " concatenada com o valor da variável "resultado". Como a 5ª posição da lista não existe, uma exceção foi gerada e a frase exibida está incompleta, pois a variável "resultado" não possui valor.


Figura 3 - Exemplo de uso do bloco Estrutura try, catch, finally 

Nesta página