Trap function call errors with pcall()
Verified
Added by iNTERFACEWARE
Use pcall() to trap errors by calling a function in protected mode (use to prevent a channel from stopping on "innocent" errors).
Source Code
-- call a function with no parameters
local Status, Result = pcall(myfunc)
-- call a function with multiple parameters (just add more as needed)
local Status, Result = pcall(myfunc,'param 1', 'param 2', 'etc...')
-- call a function with a table parameter
local Status, Result = pcall(myfunc,{'John', 'William', 'Smith'})
local Status, Result = pcall(myfunc,{[1] = 'John', [2]='William', [3]='Smith'})
local Status, Result = pcall(myfunc,{['fname'] = 'John', ['mname']='William', ['lname']='Smith'})
-- call a function with a string and table parameters
local Status, Result = pcall(myfunc,'param 1', {'John', 'William', 'Smith'})
-- Dummy code process the returned error
if Status == false then
if Result == 'I am a FATAL ERROR' then
-- do some cleanup then stop on FATAL ERROR
error('Fatal error occurred: '.. Result)
else
-- do some cleanup and continue processing
end
end
Description
Use pcall() to trap errors by calling a function in protected mode (use to prevent a channel from stopping on "innocent" errors).
Usage Details
Using pcall() allows you to call a function and catch an error if it occurs. Then you can test the error and decide what to do, e.g., cleanup/recover and continue for non-fatal errors, and cleanup then exit for fatal errors.
How to use the snippet:
- Copy the desired
pcall()example into your script - Change the code to call your own function
- Adapt the dummy error processing code
More Information