Lua base pcall()

作者: AlbertS | 来源:发表于2016-09-04 22:45 被阅读614次
保护模式.jpg

前言

作为苦逼的程序猿大周末的时候也必须不能忘记学习,今天我们来看一个调用其他函数的函数,这个函数其实就是给其他函数提供一个保护环境,保护程序可以不被意外终止,可以顺利的执行下去,我们一起来看一下这个函数的用法吧。

内容


pcall()

  • 原型:pcall(f, arg1, ···)
  • 解释:在一个保护模式下调用参数f指定的函数。这意味着在函数f中发生的错误都不会被抛出,相反,函数pcall会捕获发生的错误然后返回一个错误状态,函数的第一个返回值是一个表示错误状态的布尔变量,当被调用函数被成功调用并且没有错误时,函数返回true作为第一个返回值,并且依次返回被调用函数的所有返回值,当发生错误时,函数会返回一个false并且紧跟着错误信息。

usage

  • 首先我们新建一个文件将文件命名为pcalltest.lua然后编写代码如下:
-- 打印一下苦逼的程序猿时间
print("\nnow time is "..os.date())

local function add_num(num1, num2)
    return num1 + num2;
end

-- 打印函数正常调用
print("\ntest function add_num reault:")
print(pcall(add_num, 3, 5))


-- 打印可能出现问题的函数
print("\ntest function add_num reault:")
print(pcall(add_num, 3, "what"))

  • 运行结果(今天在家加班,运行环境有点问题,找了一个在线运行的凑活着看吧)
base_pcall.png

总结

  • 从结果可以看出函数第一个返回值就是一个表示函数执行状态的布尔值。
  • 由函数两次运行可以看出,不管被调用函数是否发生错误,函数都不会中断。
  • 这个函数可以为被执行函数提供一个保护模式,保证程序不会意外终止。
  • 还有这个时间打印的其实是格林威治时间,实际上现在已经2016-09-04 22:37:56

相关文章

  • Lua base pcall()

    前言 作为苦逼的程序猿大周末的时候也必须不能忘记学习,今天我们来看一个调用其他函数的函数,这个函数其实就是给其他函...

  • C API-调用LUA函数

    lua_pcall 函数 lua_pcall 可以执行lua代码 前面的例子中load时就执行了lua脚本或者lu...

  • Cocos2d-x 异常处理

    Lua中异常处理分为pcall、xpcall、debug,若需在Lua中处理错误,必须使用 pcall(prote...

  • lua pcall示例

    工作也一年多了,之前一直说写博客,也没有动笔。这次简单分析一下lua pcall这个函数,试手一下。 lua中pc...

  • 为什么调用 lua_pcall

    原理:C和lua通过一个堆栈进行交互,lua_pcall的用途就是执行堆栈里的函数,先将lua里的函数压入堆栈,然...

  • 为什么有的错误信息LUA没有打印

    1.接口使用问题 提供错误返回的接口是lua_pcall ,看看是不是调用了lua_call这个接口 函数原型: ...

  • AssetBundle异步加载被中断的问题

    1)AssetBundle异步加载被中断的问题 2)LuaDLL.lua_pcall()自身产生开销问题 3)法线...

  • lua_pcall(): attempt to call a n

    1、问题描述 首先 调用luaL_loadbuffer(L,start_addr,len,0)载入lua代码,然...

  • Lua base tonumber()

    前言 重新开始更新的第一天,我们来聊一个轻松一点的函数,tonumber()这是个将指定参数转换成数字的函数,利用...

  • Lua base type()

    前言 今天学习的这个函数在lua中绝对很常用,用来查询当前变量是什么类型,有点反射机制的意思。那么知道变量是什么类...

网友评论

    本文标题:Lua base pcall()

    本文链接:https://www.haomeiwen.com/subject/icalettx.html