Lua错误处理方式

xiaoxiao2021-02-28  38

Lua 错误处理方式

本人Java出身,在学习Lua过程中发现其多错误的处理方式较Java有所不同,但想法和结果都是一样的。不管怎样,先在这里记录一下。

发生错误

在Lua中发生错误有三种情况

1. 语法错误,比如

a = b --~ b未定义 运行时错误 b = nil --~ 这里b没有初始化成功 a = 10 / b 手动抛出错误 --~ error函数抛出错误 error('error message',1) --~ 断言错误 assert(false, 'assert 错误')

错误处理

pcall pcall 接受一个“被监控”函数和函数参数,当发生错误时返回false,正常执行后返回true local run = function(str) print('befor-->\t' .. str) error('error in here') print('after') end if pcall(run,'hello') then print('all right') else print('error') end

输出 “error” 2. xpcall xpcall接受“被监控”函数,错误处理函数和函数参数,发生错误时将调用错误处理函数,在错误处理函数中可通过debug.traceback()获取错误信息或debug.debug()进入错误检查见面。

local run = function(str) print('befor-->\t' .. str) error('error in here') print('after') end local handler = function() print('error') local trace = debug.traceback() print(trace) local d = debug.debug() print(d) end local result = xpcall(run, handler, 'hello') print(result)

输出 error stack traceback: .\task2.lua:40: in function <.\task2.lua:38> .\task2.lua:32: in function <.\task2.lua:31> [C]: in function ‘xpcall’ .\task2.lua:53: in main chunk [C]: ?

转载请注明原文地址: https://www.6miu.com/read-600161.html

最新回复(0)