- Created by Unknown User (557058:4b1b311a-8636-4ab4-87d8-6a41e4d941bf), last modified by Laila Maria Vieira Souza on 08/10/2024
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ção 5 da 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