love.errhand (Polski)
Procedura obsługi wyjątków, używana do wyświetlania błędów.
Contents
Funkcja
Sygnatura
love.errhand( wiadomosc )
Argumenty
string wiadomosc
- Wiadomość z komunikatem błędu.
Wartość zwracana
Żadna
Przykłady
Available since LÖVE 0.9.0 |
This variant is not supported in earlier versions. |
Domyślna implementacja
-- wypisywanie błędu na konsoli
local function error_printer(wiadomosc, layer)
print((debug.traceback("Error: " .. tostring(wiadomosc), 1+(layer or 1)):gsub("\n[^\n]+$", "")))
end
function love.errhand(wiadomosc)
wiadomosc = tostring(wiadomosc)
error_printer(wiadomosc, 2)
-- jeśli okno love nie istnieje, lub nizbędne moduły
-- nie jesteśmy w stanie nic więcej zrobić
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
-- Przywrócenie domyślnych ustawień urządzeń
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() -- Przerwij wibracje wszystkich joysticków
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, wiadomosc.."\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 |
Ta wersja jest używana we wcześniejszych wersjach LOVE.. |
Domyślna implementacja
-- wypisywanie błędu na konsoli
local function error_printer(wiadomosc, layer)
print((debug.traceback("Error: " .. tostring(wiadomosc), 1+(layer or 1)):gsub("\n[^\n]+$", "")))
end
function love.errhand(wiadomosc)
wiadomosc = tostring(wiadomosc)
error_printer(wiadomosc, 2)
if not love.graphics or not love.event or not love.graphics.isCreated() then
return
end
-- Przywrócenie domyślnych ustawień urządzeń
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, wiadomosc.."\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
Zobacz również
Inne języki
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