Error Handling
Error Status
Use an error status and message when the program can recover locally.
message
An explicit message is often enough when the caller can continue with a safe alternative.
Error Status
error_status.lua
Replay: real traced execution (multi-file project)
local role = "guest"
local ok = role == "admin"
local access = "denied"
local message = "admin required"
if ok then
access = "allowed"
message = "ok"
end
print("role=" .. role)
print("ok=" .. tostring(ok))
print("access=" .. access)
print("message=" .. message)
local role = "admin"
local ok = role == "admin"
local access = "denied"
local message = "admin required"
if ok then
access = "allowed"
message = "ok"
end
print("role=" .. role)
print("ok=" .. tostring(ok))
print("access=" .. access)
print("message=" .. message)
local role = "editor"
local ok = role == "admin"
local access = "denied"
local message = "admin required"
if ok then
access = "allowed"
message = "ok"
end
print("role=" .. role)
print("ok=" .. tostring(ok))
print("access=" .. access)
print("message=" .. message)
role ← guest, ok ← false, access ← denied, message ← admin required
1local role→ guest = "guest" --@role="admin", "editor"2local ok→ false = roleguest == "admin"3local access→ denied = "denied"4local message→ admin required = "admin required"56if ok then7 access = "allowed"8 message = "ok"9end1011print("role=" .. roleguest)12print("ok=" .. tostring(okfalse))13print("access=" .. accessdenied)14print("message=" .. messageadmin required)outputrole=guest ok=false access=denied message=admin required
role ← admin, ok ← true, access ← denied, message ← admin required
1local role→ admin = "admin"2local ok→ true = roleadmin == "admin"3local access→ denied = "denied"4local message→ admin required = "admin required"access ← allowed, message ← ok
6if oktrue then7 access→ allowed = "allowed"8 message→ ok = "ok"9endprint("role=" .. role)
11print("role=" .. roleadmin)12print("ok=" .. tostring(oktrue))13print("access=" .. accessallowed)14print("message=" .. messageok)outputrole=admin ok=true access=allowed message=ok
role ← editor, ok ← false, access ← denied, message ← admin required
1local role→ editor = "editor"2local ok→ false = roleeditor == "admin"3local access→ denied = "denied"4local message→ admin required = "admin required"56if ok then7 access = "allowed"8 message = "ok"9end1011print("role=" .. roleeditor)12print("ok=" .. tostring(okfalse))13print("access=" .. accessdenied)14print("message=" .. messageadmin required)outputrole=editor ok=false access=denied message=admin required