Lua 错误处理(一)

举报
基本资料 发表于 2021/04/14 09:19:56 2021/04/14
【摘要】 程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。任何程序语言中,都需要错误处理。错误类型有:语法错误运行错误语法错误语法错误通常是由于对程序的组件(如运算符、表达式)使用不当引起的。一个简单的实例如下:-- test.lua 文件a == 2以上代码执行结果为:...

程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。

任何程序语言中,都需要错误处理。错误类型有:

  • 语法错误
  • 运行错误

语法错误

语法错误通常是由于对程序的组件(如运算符、表达式)使用不当引起的。一个简单的实例如下:

-- test.lua 文件
a == 2

以上代码执行结果为:

lua: test.lua:2: syntax error near '=='

正如你所看到的,以上出现了语法错误,一个 "=" 号跟两个 "=" 号是有区别的。一个 "=" 是赋值表达式两个 "=" 是比较运算。

另外一个实例:

实例

for a= 1,10
   print(a)
end

执行以上程序会出现如下错误:

lua: test2.lua:2: 'do' expected near 'print'

语法错误比程序运行错误更简单,运行错误无法定位具体错误,而语法错误我们可以很快的解决,如以上实例我们只要在for语句下添加 do 即可:

实例

for a= 1,10
do
   print(a)
end

运行错误

运行错误是程序可以正常执行,但是会输出报错信息。如下实例由于参数输入错误,程序执行时报错:

function add(a,b)
   return a+b
end

add(10)

当我们编译运行以下代码时,编译是可以成功的,但在运行的时候会产生如下错误:

lua: test2.lua:2: attempt to perform arithmetic on local 'b' (a nil value)
stack traceback:
    test2.lua:2: in function 'add'
    test2.lua:5: in main chunk
    [C]: ?

lua 里调用函数时,即使实参列表和形参列表不一致也能成功调用,多余的参数会被舍弃,缺少的参数会被补为 nil。

以上报错信息是由于参数 b 被补为 nil 后,nil 参与了 + 运算。

假如 add 函数内不是 "return a+b" 而是 "print(a,b)" 的话,结果会变成 "10 nil" 不会报错。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。