Lua中有函数pcall、error、assert函数来操作错误。其中pcall用于捕获错误、error抛出一个错误、assert是error的包装。 一、抛出错误 在Lua中抛出错误信息的函数是error,通常包含调用堆栈信息以及错误提示信息。而assert是error的包装,它有两个参数可选,第一个参数如果返回false,那么就引发错误,抛出错误提示信息第二个参数。
如果assert的第一个参数为不为false,则返回第一个参数的值;否则,执行error函数,输出错误信息,错误信息的内容为assert的第二个参数。 输出结果和之前是一样的~ 3.捕获错误代码——pcall 如果在错误发生时,我们不希望代码停止运行,而是做一些紧急措施,那么,可以使用pcall捕获错误。 如以下代码: 1. function test() ...
Lua中有函数pcall、error、assert函数来操作错误。其中pcall用于捕获错误、error抛出一个错误、assert是error的包装。 一、抛出错误 在Lua中抛出错误信息的函数是error,通常包含调用堆栈信息以及错误提示信息。而assert是error的包装,它有两个参数可选,第一个参数如果返回false,那么就引发错误,抛出错误提示信息第二个参数。
Level=1[默认]:为调用error位置(文件+行号) Level=2:指出哪个调用error的函数的函数 Level=0:不添加错误位置信息pcall 和 xpcall、debugLua中处理错误,可以使用函数pcall(protected call)来包装需要执行的代码。pcall接收一个函数和要传递给后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, error...
Lua中处理错误,可以使用函数pcall(protected call)来包装需要执行的代码。pcall接收一个函数和要传递给后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo。语法格式如下 if pcall(function_name, ….) then -- 没有错误 else -- 一些错误 end 简单实例:...
lua 的替代方案是内置了 pcall(f) 函数调用。...在 Redis 的源码中可以看到 lua 脚本的执行被包裹在 pcall 函数调用中。...if (lua_pcall(lua,0,0,0)) { addReplyErrorFormat(c,"Error running script (new function): %s\n",...err = lua_pcall(lua,0,1,-2); ... } Redis 在 lua 脚本中...
error (message [, level]) 在Lua中使用error函数抛出错误信息,通常包含调用堆栈信息以及错误提示信息! 第一个参数message为自定义的错误提示信息。 第二个参数为可选的出错位置信息,默认为1,即为调用error函数的位置;2即为调用error函数的函数的位置;0则不打印出错位置信息!
functiondivide(a, b)ifb ==0thenerror("Division by zero")endreturna / bendstatus, result =pcall(divide,10,0)ifstatusthenprint("Result:", result)elseprint("Error:", result)end 在这个示例中,如果尝试除以 0,则函数会抛出一个错误。通过 pcall 函数来捕获并处理这个错误,可以让程序更加健壮和稳定。
默认的lua_pcall错误处理程序(在Lua5.3中)什么也不做,允许异常消息保留在堆栈的顶部。我们想要改变这一点,因此除了在堆栈上的异常消息之外,我们还得到了一个luaL_traceback跟踪,该消息位于lua_pcall失败的堆栈之上。(L, -(number of args + 1)); /* error ...