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 ,这表示收集器以内存分配的"两倍"速工作。

相关推荐
solicitous2 小时前
遇到一个口头机遇
学习·生活
观书喜夜长3 小时前
大模型应用开发学习-基于 LangChain 框架实现的交互式问答脚本
python·学习
FPGA小迷弟4 小时前
FPGA 时序约束基础:从时钟定义到输入输出延迟的完整设置
前端·学习·fpga开发·verilog·fpga
炽烈小老头5 小时前
【每天学习一点算法 2026/03/22】前 K 个高频元素
学习·算法
神舟之光5 小时前
Java面向对象编程知识补充学习-2026.3.21
java·开发语言·学习
网络工程小王5 小时前
【大数据技术详解】——Kibana(学习笔记)
大数据·笔记·学习
im_AMBER5 小时前
Leetcode 144 位1的个数 | 只出现一次的数字
学习·算法·leetcode
red_redemption6 小时前
自由学习记录(144)
学习
adore.9686 小时前
3.20 复试学习
学习
Master_oid7 小时前
机器学习35:元学习的应用
人工智能·学习·机器学习