在看《Lua游戏开发实践指南》时,在P34中有说明assert,但是说明特少,导致自己完全不懂所以然,因此自己研究了一下。
百度百科的解释:
- Assert(断言)编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。断言只有在Debug模式下才有效。
下面结合Lua的例子,来看看Assert具体有什么用:)
1.「没有Assert的情况」
--这里输入一个数字 print(string.format("Please Enter A Number:")) input = io.read("*number") print(input)
当输入的是“?”时,结果如下
可以看到,系统没有报错,可以正常运行。
2.「有Assert的情况」
--这里输入一个数字 print(string.format("Please Enter A Number:")) input1 = assert(io.read("*number")) print(input)
当输入的还是“?”时,结果就完全不同了
可以看到,当有assert包围代码后,遇到错误,会抛出异常,而不会上刚刚那样。这样的用处十分之大,当项目大了之后,出错可以很好地定位到是哪里出错。