Na linguagem Lua existe a possibilidade de executarmos uma função e verificar se ocorreu um erro ou não.
Assim, de acordo com um retorno de um status, podemos fazer os devidos tratamentos. Essa possibilidade
é obtida utilizando a função pcall e xpcall.
Sintaxe
status,valor_retorno = pcall(f,arg1,arg2, argN)
Retorno
status: true se não houver erro. false caso contrário.
valor_retorno: mensagem de erro ou valor retornado pela função
Exemplo 3
function funcao1(param)
if(type(param) ~= "string") then
error("funcao1: param com tipagem incorreta.")
end
return 10
end
--passando argumento errado
local status,retorno = pcall(funcao1,1)
if status == false then --houve erro
print(retorno)
else --não houve erro
print("OK. Executou sem erro")
end
Saída
Main.lua:3: funcao1: param com tipagem incorreta
Com a função xpcall, temos a possibilidade de também passar uma função, para ser executada/testada
como argumento.
Além disso, podemos passar uma segunda função para lidar com erros caso estes ocorram.
Sintaxe
status,valor_retorno = pcall(f,arg1,arg2, argN)
Onde
status: true se não houver erro, false caso contrário.
valor_retorno: valor retornado pela função
Exemplo 3
function funcao1(param)
if(type(param) ~= "string") then
error("funcao1: param com tipagem incorreta.")
end
return 10
end
function funcao_erro(err)
print(err)
end
--passando argumento errado
local status,erro,retorno = pcall(funcao1,funcao_erro,1)
--imprimindo retornos
print(status)
print(erro)
print(retorno)
Saída
false
Main.lua:3: funcao1: param com tipagem incorreta.
nil