lua 错误处理
语法错误
语法错误编译不能通过,通常是由程序使用不当引起
示例:nil与整数相加
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> a==2
false
-- a由于未赋值,默认为nil,不能和数值相加
> a+1
stdin:1: attempt to perform arithmetic on a nil value (global 'a')
stack traceback:
stdin:1: in main chunk
[C]: in ?
示例:语法缺少关键词
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> t={1,2,3,4,5,6}
-- 遍历表:关键词是in
> for key,value int pairs(t) print(key,value) end
stdin:1: 'in' expected near 'int'
-- 遍历表,缺少关键词do
> for key,value in pairs(t) print(key,value) end
stdin:1: 'do' expected near 'print'
-- 遍历表,正常输出
> for key,value in pairs(t) do print(key,value) end
1 1
2 2
3 3
4 4
5 5
6 6
运行错误
运行错误可通过编译,在运行时由于参数传递等原因报错
示例:函数参数不对导致运行报错
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> function fun(a,b) print(a+b) end
-- 传入1个参数,另一个参数没有赋值,默认为nil,nil不能与整数相加
> fun(1)
stdin:1: attempt to perform arithmetic on a nil value (local 'b')
stack traceback:
stdin:1: in function 'fun'
(...tail calls...)
[C]: in ?
-- 传入两个数值,可正常相加
> fun(1,2)
3
-- 字符串类型不能相加
> fun('a','b')
stdin:1: attempt to add