/examples/lanes/error.lua
Lua | 47 lines | 26 code | 10 blank | 11 comment | 1 complexity | 2bfdbc87c0d033872dab39fe863833d3 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0, AGPL-3.0, LGPL-2.0, LGPL-3.0, BSD-3-Clause, ISC
- --
- -- 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