Tratamento de Erros Lua
Neste artigo, discutiremos o tratamento de erros em Lua e discutiremos várias técnicas para lidar com erros em Lua.
Na programação, o tratamento de erros permite detectar e tratar erros que podem ocorrer durante a execução do programa.
Os erros podem ser divididos em dois tipos: erros de sintaxe e erros de tempo de execução.
Erros de sintaxe Lua
Erros de sintaxe ocorrem quando o código do programador viola as regras de sintaxe da linguagem .
O interpretador ou compilador detecta erros durante a compilação do código.
Erros de sintaxe impedem a execução do código e geralmente são fáceis de corrigir.
Um exemplo de erro de sintaxe é dado abaixo:
Example:
Há um erro de sintaxe no código acima. O motivo é que o parêntese de fechamento “ ) ” está faltando no final da instrução, o que faz com que o código fique incompleto e inválido.
Aqui está outro exemplo de erro de sintaxe:
Example:
Nesse código, a função sayHello pega um nome de parâmetro e tenta imprimir uma saudação com o nome incluído. No entanto, há um erro de sintaxe na instrução de impressão em que a string e a variável não são concatenadas corretamente com uma vírgula ou operador de concatenação.
Os erros de sintaxe podem ser evitados verificando novamente a sintaxe do código e usando as convenções de codificação adequadas. É uma boa prática usar um ambiente de desenvolvimento integrado (IDE) que verifica erros de sintaxe em tempo real.
Quando encontramos um erro de sintaxe, precisamos voltar ao código, encontrar o erro e corrigi-lo. Depois de corrigir o erro, podemos executar o código novamente para garantir que ele seja executado sem erros de sintaxe.
Erros de Tempo de Execução da Lua
Os erros de tempo de execução ocorrem quando o programa é executado e algo inesperado acontece que o impede de continuar normalmente.
Por exemplo, o trecho de código a seguir resultará em um erro de tempo de execução:
Example:
O código acima resulta em erro porque a variável x é uma string e não pode ser adicionada à variável y, que é um número.
Aqui está outro exemplo de um erro de tempo de execução:
Example:
Este é um erro de tempo de execução causado pela ausência de uma variável necessária.
Neste caso, o parâmetro “ y ” não foi passado, resultando em seu valor ser nulo, o que gerou o erro.
Funções Assert e Error
As duas funções assert e error são freqüentemente usadas para lidar com erros.
Função de Asserção
A função assert em Lua é usada para tratamento de erros e para verificar se uma determinada condição é verdadeira.
Quando a condição for true , a função não faz nada e retorna seu valor. No entanto, se a condição for false , a função assert lançará um erro com uma mensagem de erro especificada.
A sintaxe da função assert é a seguinte:
assert(condition, [error_message])
Vejamos um exemplo que implementa a função assert no exemplo de erro de tempo de execução acima:
Example:
O código então chama a função restante com apenas um argumento, passando o valor 10. Como a função espera dois argumentos, o segundo argumento (y) é considerado nulo. Como resultado, a segunda função assert lança uma mensagem de erro “y is not a number”.
Função de erro
A função de erro em Lua gera um erro na função atual ou em uma função chamada.
A função recebe um argumento de string que especifica a mensagem de erro a ser exibida.
Quando ocorre um erro, a função de erro encerra a execução da função.
Aqui está a sintaxe para a função de erro:
error(message [, level])
O argumento da mensagem é obrigatório e deve ser uma string que descreva o erro.
O argumento de nível é opcional e deve ser um número inteiro que indica o nível no qual relatar o erro. Um valor de 1 (o padrão) indica a função atual, 2 indica o chamador da função atual e assim por diante.
Aqui está um exemplo de uso da função de erro:
Example:
No exemplo acima, a função restante verifica se o segundo argumento y é zero. Se y for zero, a função gerará um erro usando a função de erro com a mensagem de erro “A divisão por zero não é permitida ”. Se y não for zero, a função retorna o resultado da operação do módulo.
Em Lua, o tratamento de erros é realizado usando as funções pcall() e xpcall() .
Lua pcall()
A função pcall() é uma função da biblioteca padrão Lua que permite chamar uma função e detectar quaisquer erros que possam ocorrer durante a execução.
A função pcall() recebe uma função e seus argumentos como entrada e retorna um valor booleano indicando se a função foi executada com sucesso ou não.
- Se a função for executada com sucesso, pcall() retornará true e quaisquer valores que a função retornar.
- Se a função encontrar um erro, pcall() retornará false e uma mensagem de erro.
O trecho de código a seguir ilustra o uso da função pcall() em Lua:
Example:
Lua xpcall()
A função xpcall() é uma versão mais avançada de pcall().
xpcall() permite que você especifique uma função de tratamento de erro que é chamada quando ocorre um erro.
A função de tratamento de erros recebe a mensagem de erro como um argumento.
O exemplo abaixo demonstra o uso da função xpcall() em Lua: