lua中assert的作用

来源:互联网 发布:ip2780清零软件 编辑:程序博客网 时间:2024/06/14 18:15

在看《Lua游戏开发实践指南》时,在P34中有说明assert,但是说明特少,导致自己完全不懂所以然,因此自己研究了一下。

百度百科的解释:

  • Assert(断言)编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。断言只有在Debug模式下才有效。


下面结合Lua的例子,来看看Assert具体有什么用:)

1.「没有Assert的情况」

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. --这里输入一个数字  
  2. print(string.format("Please Enter A Number:"))  
  3. input = io.read("*number")  
  4. print(input)  

当输入的是“?”时,结果如下

可以看到,系统没有报错,可以正常运行。

2.「有Assert的情况」

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. --这里输入一个数字  
  2. print(string.format("Please Enter A Number:"))  
  3. input1 = assert(io.read("*number"))  
  4. print(input)  

当输入的还是“?”时,结果就完全不同了


可以看到,当有assert包围代码后,遇到错误,会抛出异常,而不会上刚刚那样。这样的用处十分之大,当项目大了之后,出错可以很好地定位到是哪里出错。


0 0
原创粉丝点击