/examples/lanes/error.lua
http://luapack.googlecode.com/ · Lua · 47 lines · 26 code · 10 blank · 11 comment · 1 complexity · 2bfdbc87c0d033872dab39fe863833d3 MD5 · raw file
- --
- -- Error reporting
- --
- -- Note: this code is supposed to end in errors; not included in 'make test'
- --
-
- require "lanes"
-
- local function lane()
-
- local subf= function() -- this so that we can see the call stack
- --error "aa"
- error({})
- error(error)
- end
- local subf2= function()
- subf()
- end
- subf2()
- end
-
- local function cleanup(err)
- end
-
- local lgen = lanes.gen("*", { --[[finalizer=cleanup]] }, lane)
-
- ---
- io.stderr:write( "\n** Error catching **\n" )
- --
- local h= lgen()
- local _,err,stack= h:join() -- wait for the lane (no automatic error propagation)
-
- if err then
- assert( type(stack)=="table" )
- io.stderr:write( "Lane error: "..tostring(err).."\n" )
-
- io.stderr:write( "\t", table.concat(stack,"\n\t"), "\n" );
- end
-
- ---
- io.stderr:write( "\n** Error propagation **\n" )
- --
- local h2= lgen()
- local _= h2[0]
- assert(false) -- does NOT get here
-
- --never ends