Difference between revisions of "love.errhand"
m (Fixed default function) |
(Added 0.9.0 version of love.errhand) |
||
Line 10: | Line 10: | ||
Nothing. | Nothing. | ||
== Examples == | == Examples == | ||
+ | {{newin|[[0.9.0]]|090|type=variant}} | ||
+ | === The default function used if you don't supply your own. === | ||
+ | <source lang="lua"> | ||
+ | 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 | ||
+ | |||
+ | -- 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() | ||
+ | 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 | ||
+ | </source> | ||
+ | ---- | ||
+ | {{oldin|[[0.9.0]]|090|type=variant|text=This variant is not used in that and later versions.}} | ||
=== The default function used if you don't supply your own. === | === The default function used if you don't supply your own. === | ||
<source lang="lua"> | <source lang="lua"> |
Revision as of 23:22, 11 August 2013
The error handler, used to display error messages.
Contents
Function
Synopsis
love.errhand( msg )
Arguments
string msg
- The error message.
Returns
Nothing.
Examples
Available since LÖVE 0.9.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.isCreated() then
if not pcall(love.window.setMode, 800, 600) then
return
end
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()
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
See Also
Other Languages
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info