Error Handling
Safe Division
Check divisors before division so invalid input has a predictable result.
safe alternative
When failure is expected for some inputs, make the invalid case a visible branch with a stable fallback value.
Safe Division
safe_division.lua
Replay: real traced execution (multi-file project)
local divisor = 2
local ok = divisor ~= 0
local display = "undefined"
if ok then
display = tostring(12 / divisor)
end
print("divisor=" .. divisor)
print("ok=" .. tostring(ok))
print("display=" .. display)
local divisor = 0
local ok = divisor ~= 0
local display = "undefined"
if ok then
display = tostring(12 / divisor)
end
print("divisor=" .. divisor)
print("ok=" .. tostring(ok))
print("display=" .. display)
local divisor = 4
local ok = divisor ~= 0
local display = "undefined"
if ok then
display = tostring(12 / divisor)
end
print("divisor=" .. divisor)
print("ok=" .. tostring(ok))
print("display=" .. display)
divisor ← 2, ok ← true, display ← undefined
1local divisor→ 2 = 2 --@divisor=0, 42local ok→ true = divisor2 ~= 03local display→ undefined = "undefined"display ← 6.0
5if oktrue then6 display→ 6.0 = tostring(12 / divisor2)7endprint("divisor=" .. divisor)
9print("divisor=" .. divisor2)10print("ok=" .. tostring(oktrue))11print("display=" .. display6.0)outputdivisor=2 ok=true display=6.0
divisor ← 0, ok ← false, display ← undefined
1local divisor→ 0 = 02local ok→ false = divisor0 ~= 03local display→ undefined = "undefined"45if ok then6 display = tostring(12 / divisor)7end89print("divisor=" .. divisor0)10print("ok=" .. tostring(okfalse))11print("display=" .. displayundefined)outputdivisor=0 ok=false display=undefined
divisor ← 4, ok ← true, display ← undefined
1local divisor→ 4 = 42local ok→ true = divisor4 ~= 03local display→ undefined = "undefined"display ← 3.0
5if oktrue then6 display→ 3.0 = tostring(12 / divisor4)7endprint("divisor=" .. divisor)
9print("divisor=" .. divisor4)10print("ok=" .. tostring(oktrue))11print("display=" .. display3.0)outputdivisor=4 ok=true display=3.0