lua学习(三)

错误处理

assert断言

  • 作用:确保某些数据是符合预期的,避免影响最终结果。

  • 格式 :assert(条件语句,报错信息)

    当条件语句为true时,assert语句不会有任何行为,但是当为false时,assert会将报错信息弹出,并中断程序的执行。

  • 注意:由于断言只在调试模式下有效,因此在生产环境中通常会被禁用,以避免影响程序性能‌。

error

  • 功能:主动发起错误并终止正在执行的函数,并返回message的内容作为错误信息。

pcall

pcall以一种"保护模式"来调用第一个参数,如果遇到报错,就会返回false及报错信息,因此pcall可以捕获函数执行中的任何错误。

lua 复制代码
pcall(function, 传给函数的参数)

pcall(function(i) print(i) end, 22)  -- 输出:22

-- 当函数报错时,会返回false,报错信息
local result, err = pcall(function(i) print(i) error("error") end, 22)

xpcall

参数:待执行函数,错误处理函数,传给待处理函数的参数

作用:通常在错误发生时,希望落得更多的调试信息,而不只是发生错误的位置。但pcall返回时,它已经销毁了调用桟的部分内容,Lua提供了xpcall函数,xpcall接收一个错误处理函数,当错误发生时,Lua会在调用桟展开前调用错误处理函数,于是就可以在这个函数中使用debug库来获取关于错误的额外信息了。

lua 复制代码
xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33)

热更

虚拟机

垃圾回收机制

实现了一个增量标记-扫描收集器。 它使用这两个数字来控制垃圾收集循环: 垃圾收集器间歇率和垃圾收集器步进倍率。 这两个数字都使用百分数为单位 (例如:值 100 在内部表示 1 )。

垃圾收集器间歇率控制着收集器需要在开启新的循环前要等待多久。 当这个值比 100 小的时候,收集器在开启新的循环前不会有等待。 设置这个值为 200 就会让收集器等到总内存使用量达到 之前的两倍时才开始新的循环。

垃圾收集器步进倍率控制着收集器运作速度相对于内存分配速度的倍率。 增大这个值不仅会让收集器更加积极,还会增加每个增量步骤的长度。 不要把这个值设得小于 100 , 那样的话收集器就工作的太慢了以至于永远都干不完一个循环。 默认值是 200 ,这表示收集器以内存分配的"两倍"速工作。

相关推荐
好奇龙猫24 分钟前
【人工智能学习-AI入试相关题目练习-第十六次】
人工智能·学习
啊我不会诶1 小时前
Codeforces Round 1071 (Div. 3) vp补题
开发语言·学习·算法
星火开发设计2 小时前
命名空间 namespace:解决命名冲突的利器
c语言·开发语言·c++·学习·算法·知识
强子感冒了2 小时前
CSS基础学习:CSS选择器与优先级规则
前端·css·学习
修己xj2 小时前
一月存档,二月加载
学习
蒸蒸yyyyzwd2 小时前
c网络编程学习笔记
c语言·网络·学习
驱动探索者2 小时前
linux hwspinlock 学习
linux·运维·学习
近津薪荼2 小时前
优选算法——滑动窗口1(单调性)
c++·学习·算法
齐鲁九零3 小时前
【AI推荐】推荐适合学英语的美剧
学习
lxl13073 小时前
学习C++(6)日期类的实现+取地址运算符重载
开发语言·c++·学习