From 8ce950721b57366c1b0bf170b780822f7afe91cc Mon Sep 17 00:00:00 2001 From: PlumBlossomMaid <108660099+PlumBlossomMaid@users.noreply.github.com> Date: Sun, 12 Apr 2026 03:35:59 +0800 Subject: [PATCH] Refactor error handling to improve parameter checks --- lua/express/router/layer.lua | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) 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`.