[Lua] Catching an error
#1
Posted 19 December 2012 - 03:45 PM
I already tried pcall, but when a program fails, it only returns false and true, which is not what I expect
Thanks
#2
Posted 19 December 2012 - 03:59 PM
#3
Posted 19 December 2012 - 04:02 PM
Lyqyd, on 19 December 2012 - 03:59 PM, said:
#4
Posted 19 December 2012 - 04:05 PM
loadfile = function( _sFile )
local file = fs.open( _sFile, "r" )
if file then
local func, err = loadstring( file.readAll(), fs.getName( _sFile ) )
file.close()
return func, err
end
return nil, "File not found"
end
dofile = function( _sFile )
local fnFile, e = loadfile( _sFile )
if fnFile then
setfenv( fnFile, getfenv(2) )
return fnFile()
else
error( e, 2 )
end
end
-- Install the rest of the OS api
function os.run( _tEnv, _sPath, ... )
local tArgs = { ... }
local fnFile, err = loadfile( _sPath )
if fnFile then
local tEnv = _tEnv
--setmetatable( tEnv, { __index = function(t,k) return _G[k] end } )
setmetatable( tEnv, { __index = _G } )
setfenv( fnFile, tEnv )
local ok, err = pcall( function()
fnFile( unpack( tArgs ) )
end )
if not ok then
if err and err ~= "" then
printError( err )
end
return false
end
return true
end
if err and err ~= "" then
printError( err )
end
return false
end
That's from bios.lua, from ComputerCraft.
#5
Posted 19 December 2012 - 04:09 PM
rone,rtwo = pcall(func)
That corresponds to the
local ok, err = pcall(function() fnFile(unpack(tArgs)) end )part of the bios, but is a little less complicated and probably better suited to your needs.
Edited by ChunLing, 19 December 2012 - 04:12 PM.
#6
Posted 19 December 2012 - 04:15 PM
ChunLing, on 19 December 2012 - 04:09 PM, said:
rone,rtwo = pcall(func)
That corresponds to the
local ok, err = pcall(function() fnFile(unpack(tArgs)) end )part of the bios, but is a little less complicated and probably better suited to your needs.
ok, err = pcall(os.ru({}, program)
but the second variable always return trueOr I need to use only os.run?
#7
Posted 19 December 2012 - 04:34 PM
#8
Posted 19 December 2012 - 04:37 PM
ChunLing, on 19 December 2012 - 04:34 PM, said:
ok, err = pcall(myProgram, my argument, soOn)If yes, thank you! If not, please explain me how
#9
Posted 19 December 2012 - 06:05 PM
#10
Posted 19 December 2012 - 08:56 PM
#11
Posted 20 December 2012 - 03:40 AM
#12
Posted 20 December 2012 - 05:38 PM
#13
Posted 21 December 2012 - 08:36 AM
atempt to call stringeven that I am using
pcall("pahtoprogram/program", args)
Edit: Fixed it
3 user(s) are reading this topic
0 members, 3 guests, 0 anonymous users











