Error handler: own function with the error-site stack, stop replacing the global error

This commit is contained in:
Brues
2026-11-03 01:07:03 -06:00
parent d2088c455f
commit eb68642d21
2 changed files with 16 additions and 14 deletions
+3 -6
View File
@@ -1494,13 +1494,10 @@ end
-- return object
function pfUI.api.GetNoNameObject(frame, objtype, layer, arg1, arg2)
-- A nil/non-frame parent otherwise dies on frame:GetRegions()/:GetChildren()
-- below, and the traceback stops here — useless, since all callers share this
-- line. pfUI shadows Lua's `error` (dropping the level arg and not throwing),
-- so fold the caller frame in via debugstack to name the offending skin, then
-- bail so we don't fall through and crash on frame:GetRegions() anyway.
-- below, where the message would name this line, shared by every caller;
-- level 2 names the offending skin instead.
if type(frame) ~= "table" or not frame.GetRegions then
error("GetNoNameObject: invalid parent frame\n" .. debugstack(2, 3, 0))
return
error("GetNoNameObject: invalid parent frame", 2)
end
local arg1 = arg1 and gsub(arg1, "([%+%-%*%(%)%?%[%]%^])", "%%%1")
+13 -8
View File
@@ -461,15 +461,20 @@ message = function(msg)
end
print = print or message
error = function(msg)
if PF_DEBUG_MODE then message(debugstack()) end
if string.find(msg, "AddOns\\pfUI") then
DEFAULT_CHAT_FRAME:AddMessage("|cffcc3333ERROR: |cffff5555".. (msg or "nil" ))
elseif not pfUI_config or (pfUI_config.global and pfUI_config.global.errors == "1") then
DEFAULT_CHAT_FRAME:AddMessage("|cffcc3333ERROR: |cffff5555".. (msg or "nil" ))
-- Errors print to chat: pfUI's own always, other addons' when the errors
-- option is on. In debug mode the stack follows, starting at the code that
-- raised the error rather than at this handler.
seterrorhandler(function(msg)
msg = tostring(msg)
if PF_DEBUG_MODE then
local height = GetErrorCallstackHeight()
message(height and debugstack(GetCallstackHeight() - height + 1) or debugstack(2))
end
end
seterrorhandler(error)
if string.find(msg, "AddOns\\pfUI") or not pfUI_config
or (pfUI_config.global and pfUI_config.global.errors == "1") then
DEFAULT_CHAT_FRAME:AddMessage("|cffcc3333ERROR: |cffff5555" .. msg)
end
end)
function pfUI.SetupCVars()
ClearTutorials()