Error Handling
Parse Status
Return a clear status when conversion may fail.
status flag
A boolean status can separate successful values from fallback text without raising an error.
Parse Status
parse_status.lua
Replay: real traced execution (multi-file project)
local raw = "21"
local number = tonumber(raw)
local ok = number ~= nil
local outcome = "invalid"
if ok then
outcome = tostring(number * 2)
end
print("raw=" .. raw)
print("ok=" .. tostring(ok))
print("outcome=" .. outcome)
local raw = "abc"
local number = tonumber(raw)
local ok = number ~= nil
local outcome = "invalid"
if ok then
outcome = tostring(number * 2)
end
print("raw=" .. raw)
print("ok=" .. tostring(ok))
print("outcome=" .. outcome)
local raw = "8"
local number = tonumber(raw)
local ok = number ~= nil
local outcome = "invalid"
if ok then
outcome = tostring(number * 2)
end
print("raw=" .. raw)
print("ok=" .. tostring(ok))
print("outcome=" .. outcome)
raw ← 21, number ← 21, ok ← true, outcome ← invalid
1local raw→ 21 = "21" --@raw="abc", "8"2local number→ 21 = tonumber(raw21)3local ok→ true = number21 ~= nil4local outcome→ invalid = "invalid"outcome ← 42
6if oktrue then7 outcome→ 42 = tostring(number21 * 2)8endprint("raw=" .. raw)
10print("raw=" .. raw21)11print("ok=" .. tostring(oktrue))12print("outcome=" .. outcome42)outputraw=21 ok=true outcome=42
raw ← abc, number ← nil, ok ← false, outcome ← invalid
1local raw→ abc = "abc"2local number→ nil = tonumber(rawabc)3local ok→ false = numbernil ~= nil4local outcome→ invalid = "invalid"56if ok then7 outcome = tostring(number * 2)8end910print("raw=" .. rawabc)11print("ok=" .. tostring(okfalse))12print("outcome=" .. outcomeinvalid)outputraw=abc ok=false outcome=invalid
raw ← 8, number ← 8, ok ← true, outcome ← invalid
1local raw→ 8 = "8"2local number→ 8 = tonumber(raw8)3local ok→ true = number8 ~= nil4local outcome→ invalid = "invalid"outcome ← 16
6if oktrue then7 outcome→ 16 = tostring(number8 * 2)8endprint("raw=" .. raw)
10print("raw=" .. raw8)11print("ok=" .. tostring(oktrue))12print("outcome=" .. outcome16)outputraw=8 ok=true outcome=16