Difference between revisions of "Pcall"
m |
|||
(4 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
=== Description === | === Description === | ||
Calls function ''f'' with the given arguments in protected mode. This means that any error inside ''f'' is not propagated, instead '''pcall''' catches the error and returns a status code. | Calls function ''f'' with the given arguments in protected mode. This means that any error inside ''f'' is not propagated, instead '''pcall''' catches the error and returns a status code. | ||
− | < | + | <syntaxhighlight lang="lua"> |
(bool), (any) = pcall(f,arg1,arg2,...) | (bool), (any) = pcall(f,arg1,arg2,...) | ||
− | </ | + | </syntaxhighlight> |
Its first result is the status code (a boolean), which is true if the call succeeds without errors. In such case, '''pcall''' also returns all results from the call, after this first result. In case of any error, '''pcall''' returns false plus the "''error''" message. | Its first result is the status code (a boolean), which is true if the call succeeds without errors. In such case, '''pcall''' also returns all results from the call, after this first result. In case of any error, '''pcall''' returns false plus the "''error''" message. | ||
Line 22: | Line 22: | ||
=== Example === | === Example === | ||
− | < | + | <syntaxhighlight lang="lua"> |
− | local | + | function isValidTexture() |
− | local result, value = | + | local result, value = pcall(Texture.new, "gfx/btns/end_down.png") |
− | print(result, value) | + | return result, value |
− | </ | + | end |
+ | |||
+ | local bmp | ||
+ | |||
+ | local result, value = isValidTexture() | ||
+ | if result then | ||
+ | bmp = Bitmap.new(value) | ||
+ | stage:addChild(bmp) | ||
+ | else | ||
+ | print(result, value) | ||
+ | end | ||
+ | </syntaxhighlight> | ||
=== See Also === | === See Also === |
Latest revision as of 10:54, 5 October 2023
Available since: Gideros 2011.6
Class: (global)
Description
Calls function f with the given arguments in protected mode. This means that any error inside f is not propagated, instead pcall catches the error and returns a status code.
(bool), (any) = pcall(f,arg1,arg2,...)
Its first result is the status code (a boolean), which is true if the call succeeds without errors. In such case, pcall also returns all results from the call, after this first result. In case of any error, pcall returns false plus the "error" message.
Parameters
f: (function) function to call in protected mode
arg1: (any) argument to pass to the function optional
arg2: (any) argument to pass to the function optional
...: (any) other optional arguments optional
Return values
Returns (bool) false if there was error, true if function call succeeded
Returns (any) all the results that function returns
Example
function isValidTexture()
local result, value = pcall(Texture.new, "gfx/btns/end_down.png")
return result, value
end
local bmp
local result, value = isValidTexture()
if result then
bmp = Bitmap.new(value)
stage:addChild(bmp)
else
print(result, value)
end
See Also