love.errhand
The error handler, used to display error messages.
Function
Synopsis
love.errhand( msg )
Arguments
string msg
- The error message.
Returns
Nothing.
Examples
Available since LÖVE 0.10.0
This variant is not supported in earlier versions.
The default function used if you don't supply your own.
local function error_printer(msg, layer) print((debug.traceback("Error: " .. tostring(msg), 1+(layer or 1)):gsub("\n[^\n]+$", ""))) end function love.errhand(msg) msg = tostring(msg) error_printer(msg, 2) if not love.window or not love.graphics or not love.event then return end if not love.graphics.isCreated() or not love.window.isOpen() then local success, status = pcall(love.window.setMode, 800, 600) if not success or not status then return end end -- Reset state. if love.mouse then love.mouse.setVisible(true) love.mouse.setGrabbed(false) love.mouse.setRelativeMode(false) end if love.joystick then -- Stop all joystick vibrations. for i,v in ipairs(love.joystick.getJoysticks()) do v:setVibration() end end if love.audio then love.audio.stop() end love.graphics.reset() local font = love.graphics.setNewFont(math.floor(love.window.toPixels(14))) love.graphics.setBackgroundColor(89, 157, 220) love.graphics.setColor(255, 255, 255, 255) local trace = debug.traceback() love.graphics.clear(love.graphics.getBackgroundColor()) love.graphics.origin() local err = {} table.insert(err, "Error\n") table.insert(err, msg.."\n\n") for l in string.gmatch(trace, "(.-)\n") do if not string.match(l, "boot.lua") then l = string.gsub(l, "stack traceback:", "Traceback\n") table.insert(err, l) end end local p = table.concat(err, "\n") p = string.gsub(p, "\t", "") p = string.gsub(p, "%[string \"(.-)\"%]", "%1") local function draw() local pos = love.window.toPixels(70) love.graphics.clear(love.graphics.getBackgroundColor()) love.graphics.printf(p, pos, pos, love.graphics.getWidth() - pos) love.graphics.present() end while true do love.event.pump() for e, a, b, c in love.event.poll() do if e == "quit" then return elseif e == "keypressed" and a == "escape" then return elseif e == "touchpressed" then local name = love.window.getTitle() if #name == 0 or name == "Untitled" then name = "Game" end local buttons = {"OK", "Cancel"} local pressed = love.window.showMessageBox("Quit "..name.."?", "", buttons) if pressed == 1 then return end end end draw() if love.timer then love.timer.sleep(0.1) end end end
Available since LÖVE 0.9.2 and removed in LÖVE 0.10.0
This variant is not supported in earlier or later versions.
The default function used if you don't supply your own.
local function error_printer(msg, layer) print((debug.traceback("Error: " .. tostring(msg), 1+(layer or 1)):gsub("\n[^\n]+$", ""))) end function love.errhand(msg) msg = tostring(msg) error_printer(msg, 2) if not love.window or not love.graphics or not love.event then return end if not love.graphics.isCreated() or not love.window.isCreated() then local success, status = pcall(love.window.setMode, 800, 600) if not success or not status then return end end -- Reset state. if love.mouse then love.mouse.setVisible(true) love.mouse.setGrabbed(false) end if love.joystick then -- Stop all joystick vibrations. for i,v in ipairs(love.joystick.getJoysticks()) do v:setVibration() end end if love.audio then love.audio.stop() end love.graphics.reset() local font = love.graphics.setNewFont(math.floor(love.window.toPixels(14))) local sRGB = select(3, love.window.getMode()).srgb if sRGB and love.math then love.graphics.setBackgroundColor(love.math.gammaToLinear(89, 157, 220)) else love.graphics.setBackgroundColor(89, 157, 220) end love.graphics.setColor(255, 255, 255, 255) local trace = debug.traceback() love.graphics.clear() love.graphics.origin() local err = {} table.insert(err, "Error\n") table.insert(err, msg.."\n\n") for l in string.gmatch(trace, "(.-)\n") do if not string.match(l, "boot.lua") then l = string.gsub(l, "stack traceback:", "Traceback\n") table.insert(err, l) end end local p = table.concat(err, "\n") p = string.gsub(p, "\t", "") p = string.gsub(p, "%[string \"(.-)\"%]", "%1") local function draw() local pos = love.window.toPixels(70) love.graphics.clear() love.graphics.printf(p, pos, pos, love.graphics.getWidth() - pos) love.graphics.present() end while true do love.event.pump() for e, a, b, c in love.event.poll() do if e == "quit" then return end if e == "keypressed" and a == "escape" then return end end draw() if love.timer then love.timer.sleep(0.1) end end end
Available since LÖVE 0.9.0 and removed in LÖVE 0.9.2
This variant is not supported in earlier or later versions.
The default function used if you don't supply your own.
local function error_printer(msg, layer) print((debug.traceback("Error: " .. tostring(msg), 1+(layer or 1)):gsub("\n[^\n]+$", ""))) end function love.errhand(msg) msg = tostring(msg) error_printer(msg, 2) if not love.window or not love.graphics or not love.event then return end if not love.graphics.isCreated() or not love.window.isCreated() then if not pcall(love.window.setMode, 800, 600) then return end end -- Reset state. if love.mouse then love.mouse.setVisible(true) love.mouse.setGrabbed(false) end if love.joystick then for i,v in ipairs(love.joystick.getJoysticks()) do v:setVibration() -- Stop all joystick vibrations. end end if love.audio then love.audio.stop() end love.graphics.reset() love.graphics.setBackgroundColor(89, 157, 220) local font = love.graphics.setNewFont(14) love.graphics.setColor(255, 255, 255, 255) local trace = debug.traceback() love.graphics.clear() love.graphics.origin() local err = {} table.insert(err, "Error\n") table.insert(err, msg.."\n\n") for l in string.gmatch(trace, "(.-)\n") do if not string.match(l, "boot.lua") then l = string.gsub(l, "stack traceback:", "Traceback\n") table.insert(err, l) end end local p = table.concat(err, "\n") p = string.gsub(p, "\t", "") p = string.gsub(p, "%[string \"(.-)\"%]", "%1") local function draw() love.graphics.clear() love.graphics.printf(p, 70, 70, love.graphics.getWidth() - 70) love.graphics.present() end while true do love.event.pump() for e, a, b, c in love.event.poll() do if e == "quit" then return end if e == "keypressed" and a == "escape" then return end end draw() if love.timer then love.timer.sleep(0.1) end end end
Removed in LÖVE 0.9.0
This variant is not used in that and later versions..
The default function used if you don't supply your own.
local function error_printer(msg, layer) print((debug.traceback("Error: " .. tostring(msg), 1+(layer or 1)):gsub("\n[^\n]+$", ""))) end function love.errhand(msg) msg = tostring(msg) error_printer(msg, 2) if not love.graphics or not love.event or not love.graphics.isCreated() then return end -- Load. if love.audio then love.audio.stop() end love.graphics.reset() love.graphics.setBackgroundColor(89, 157, 220) local font = love.graphics.newFont(14) love.graphics.setFont(font) love.graphics.setColor(255, 255, 255, 255) local trace = debug.traceback() love.graphics.clear() local err = {} table.insert(err, "Error\n") table.insert(err, msg.."\n\n") for l in string.gmatch(trace, "(.-)\n") do if not string.match(l, "boot.lua") then l = string.gsub(l, "stack traceback:", "Traceback\n") table.insert(err, l) end end local p = table.concat(err, "\n") p = string.gsub(p, "\t", "") p = string.gsub(p, "%[string \"(.-)\"%]", "%1") local function draw() love.graphics.clear() love.graphics.printf(p, 70, 70, love.graphics.getWidth() - 70) love.graphics.present() end draw() local e, a, b, c while true do e, a, b, c = love.event.wait() if e == "quit" then return end if e == "keypressed" and a == "escape" then return end draw() end end
Please login to continue.