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

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习