diff --git a/lua/express/router/layer.lua b/lua/express/router/layer.lua index 3e8ac93..bfca222 100644 --- a/lua/express/router/layer.lua +++ b/lua/express/router/layer.lua @@ -41,26 +41,28 @@ LAYER_MT.__index = LAYER_MT -- Handle the error for the layer. function LAYER_MT:handle_error(err, req, res, next) - local fn = self.handle - if debug.getinfo(fn, "Su").nparams ~= 4 then - -- not a standard error handler - return next(err) - end - - local ok, er = pcall(fn, err, req, res, next) - if not ok then next(er) end + local fn = self.handle + local info = debug.getinfo(fn, "Su") + if not info or not info.nparams or info.nparams ~= 4 then + -- not a standard error handler + return next(err) + end + + local ok, er = pcall(fn, err, req, res, next) + if not ok then next(er) end end -- Handle the request for the layer. function LAYER_MT:handle_request(req, res, next) - local fn = self.handle - if debug.getinfo(fn, "Su").nparams > 3 then - -- not a standard error handler - return next() - end - - local ok, err = pcall(fn, req, res, next) - if not ok then next(err) end -- если ошибка в app:get() хендлере, то не останавливаемся, а идем к следующему, передавая ошибку дальше + local fn = self.handle + local info = debug.getinfo(fn, "Su") + if info and info.nparams and info.nparams > 3 then + -- not a standard request handler + return next() + end + + local ok, err = pcall(fn, req, res, next) + if not ok then next(err) end end -- Check if this route matches `path`, if so populate `.params`.