Исключения


-- Обработка исключений связана с вызовом pcall()

local status, err = pcall(function () a=5/0 end)
print(status)
print(err)

-- Можно самому вызывать исключение
if not (a and b) then error() end

* Исключения генерятся функцией error(message [, level])
* и могут быть перехвачены только внутри вызова pcall(f, arg1, ...)

Пример:

#!/usr/bin/lua

function test_f(...)
   a = ...
   if (a ~= 1) then error("Incorrect call") end
   print ("Ok!")
   return 100,200;
end

res = { pcall(test_f, 1) }
for i,v in ipairs(res) do
   print(i,' ',v)
end