WoW:API pcall: Difference between revisions

({{luaapi}})
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{luaapi}}
{{wowlua}}
Calls a function, returning a boolean indicating success as the first return value, and error text / return values as the following values.
Calls a function, returning a boolean indicating success as the first return value, and error text / return values as the following values.
  retOK, ret1, ret2, ... retn = pcall (func, arg1, arg2, ...);
  retOK, ret1, ret2, ... retn = pcall (func, arg1, arg2, ...);


== Arguments ==
== Arguments ==
;func : Function - The function that will be called (from within) pcall().
;func
;arg1 - argn : Variable - Any variable that is also to be passed with the function when its called (Optional).
: Function - The function that will be called (from within) pcall().
;arg1 - argn
: Variable - Any variable that is also to be passed with the function when its called (Optional).


== Returns ==
== Returns ==
;retOK : Boolean - If the call to the function (that was passed to pcall) succeeded, returns true. If an error occured, returns false.
;retOK
;ret1 : String (if failed) / Variable - If an error occured, error text is returned; if not, ret1 is the first return value of the original function.
: Boolean - If the call to the function (that was passed to pcall) succeeded, returns true. If an error occured, returns false.
;ret2 - retn : Variable - If the function call succeeded, those return variables contain values returned by original function.
;ret1
: String (if failed) / Variable - If an error occured, error text is returned; if not, ret1 is the first return value of the original function.
;ret2 - retn
: Variable - If the function call succeeded, those return variables contain values returned by original function.


== Example ==
== Example ==
function myTest(incrementVal)
<pre>
  return incrementVal + 10;
function myTest(incrementVal)
end
  return incrementVal + 10;
end
   
   
local retOK, ret1 = pcall(myTest,"string value");
local retOK, ret1 = pcall(myTest,"string value");
local msg = "";
local msg = "";
if (retOK) then
if retOK then
   msg = "Function succeeded, result: " .. ret1 .. ".";
   msg = "Function succeeded, result: " .. ret1 .. ".";
else
else
   msg = "Function failed, error text: " .. ret1 .. ".";
   msg = "Function failed, error text: " .. ret1 .. ".";
end
end
DEFAULT_CHAT_FRAME:AddMessage(msg);
DEFAULT_CHAT_FRAME:AddMessage(msg);
</pre>


====Result====
==== Result ====
pcall will catch the error that occured within 'myTest', and output the appropriate text to the default chat window. If "string value" is replaced by a number, the code will output number+10 instead.
'pcall' will catch the error that occurred within 'myTest', and output the appropriate text to the default chat window. If "string value" is replaced by a number, the code will output number+10 instead.


==Details==
==Details==
: pcall will ''also'' return other arguments returned from the "function" if all is successful.
: pcall will ''also'' return other arguments returned from the "function" if all is successful.

Latest revision as of 21:17, 2 August 2025

WoW Lua

Calls a function, returning a boolean indicating success as the first return value, and error text / return values as the following values.

retOK, ret1, ret2, ... retn = pcall (func, arg1, arg2, ...);

Arguments

func
Function - The function that will be called (from within) pcall().
arg1 - argn
Variable - Any variable that is also to be passed with the function when its called (Optional).

Returns

retOK
Boolean - If the call to the function (that was passed to pcall) succeeded, returns true. If an error occured, returns false.
ret1
String (if failed) / Variable - If an error occured, error text is returned; if not, ret1 is the first return value of the original function.
ret2 - retn
Variable - If the function call succeeded, those return variables contain values returned by original function.

Example

function myTest(incrementVal)
  return incrementVal + 10;
end
 
local retOK, ret1 = pcall(myTest,"string value");
local msg = "";
if retOK then
  msg = "Function succeeded, result: " .. ret1 .. ".";
else
  msg = "Function failed, error text: " .. ret1 .. ".";
end
DEFAULT_CHAT_FRAME:AddMessage(msg);

Result

'pcall' will catch the error that occurred within 'myTest', and output the appropriate text to the default chat window. If "string value" is replaced by a number, the code will output number+10 instead.

Details

pcall will also return other arguments returned from the "function" if all is successful.