A função error()
Parte da seção Lógica e fluxo do Journey de Lua da Coddy. Lição 32 de 54.
Às vezes, seu código precisa parar imediatamente quando algo dá errado. Lua fornece a função error() para lidar com essas situações, gerando um erro e interrompendo a execução do script.
A função error() recebe uma mensagem como argumento e interrompe o programa, exibindo essa mensagem para indicar o que deu errado. Aqui está a sintaxe básica:
error("Something went wrong!")Isso é particularmente útil ao validar entradas de funções. Por exemplo, se uma função espera um número positivo, mas recebe um número negativo, você pode usar error() para impedir a execução:
function calculateSquareRoot(num)
if num < 0 then
error("Cannot calculate square root of a negative number")
end
return math.sqrt(num)
endQuando error() é chamada, o programa para imediatamente nesse ponto e exibe sua mensagem de erro personalizada. Isso ajuda você a detectar problemas antecipadamente e comunicar com clareza o que deu errado, tornando seu código mais confiável e mais fácil de depurar.
error() serve para erros reais, como quando uma função é chamada com o tipo de valor errado. Para falhas que quem chama deve esperar, como um item ausente ou uma entrada inválida do usuário, o código Lua geralmente não gera um erro. Em vez disso, a função retorna nil e uma mensagem, e quem chamou verifica o resultado:
function findItem(inventory, name)
if inventory[name] == nil then
return nil, "No item called " .. name
end
return inventory[name]
end
local count, err = findItem({potion = 3}, "sword")
if count then
print("You have " .. count)
else
print(err) -- Nenhum item chamado sword
endAs próprias funções do Lua funcionam da mesma maneira: tonumber("abc") retorna nil, e io.open() retorna nil e uma mensagem quando não consegue abrir um arquivo.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e fluxo
1Iteração avançada de tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de personagem2Mais funções da biblioteca table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRevisão - Placar de pontuações máximasPratique por conta própria: Compilador de Lua online