如果需要在Lua中处理错误,必须使用函数pcall(protected call)来包装需要执行的代码。

pcall接收一个函数和要传递个后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo

if pcall(function_name, ….) then

-- no error

else

-- some error

end

简单示例

> =pcall(function(i) print(i) end, 33)

33

true

> =pcall(function(i) print(i) error('error..') end, 33)

33

false        stdin:1: error..

这里注意对返回值的逻辑判断

> function f() return false,2 end

> if f() then print '1' else print '0' end

0

pcall以一种"保护模式"来调用第一个参数,因此pcall可以捕获函数执行中的任何错误。

通常在错误发生时,希望落得更多的调试信息,而不只是发生错误的位置。但pcall返回时,它已经销毁了调用桟的部分内容。Lua提供了xpcall函数,xpcall接收第二个参数——一个错误处理函数,当错误发生时,Lua会在调用桟展看(unwind)前调用错误处理函数,于是就可以在这个函数中使用debug库来获取关于错误的额外信息了。

debug库提供了两个通用的错误处理函数:

debug.debug:提供一个Lua提示符,让用户来价差错误的原因

debug.traceback:根据调用桟来构建一个扩展的错误消息

>=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33)

33

stack traceback:

stdin:1: in function <1>1>

[C]: in function 'error'

stdin:1: in function <1>1>

[C]: in function 'xpcall'

stdin:1: in main chunk

[C]: in ?

false        nil

打开lol显示lua_pcall_Lua中的异常处理pcall、xpcall、debug使用实例相关推荐

  1. 【转】 ABAP中的异常处理 - TRY CATCH的使用实例

    在平时的ABAP开发中,需要捕获的异常通常为两种,一种是执行SQL,比如主键重复,INSERT语句字段类型不匹配等.还有就是RFC的通信错误,比如不能进行远程连接等.通常可以这么处理: 1.数据库异常 ...

  2. python打开窗口显示倒计时_python实现的简单窗口倒计时界面实例

    本文实例讲述了python实现的简单窗口倒计时界面.分享给大家供大家参考.具体分析如下: 下面的代码通过Tkinter制作windows窗口界面,然后时间了一个简单的倒计时功能,代码可以直接运行 # ...

  3. java 异常处理发生异常_Java中的异常处理

    java 异常处理发生异常 Exception Handling in Java is a very interesting topic. Exception is an error event th ...

  4. java读excel乱码,【java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开,】java读取excel乱码...

    java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开, 1.转换格就是将受损的Excel XP簿另存格式选为SYLK.如果可以打开受件,只是不能进行各种编辑和打印操作,那 ...

  5. python中cv2、Image和plt的图片打开、显示和保存

    使用cv2.Image.plt打开.显示和保存图片 文章目录 使用cv2.Image.plt打开.显示和保存图片 0.读取图片 1.使用cv2显示cv2打开的图片 2.使用cv2显示Image打开的图 ...

  6. 【踩坑】Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题

    [踩坑]Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题 一. 问题重现 二. 问题解决思路 1. 确认是不是上传就导致数据出错了 2. 是不是平台问题 三. ...

  7. excel表格中打开可以显示整个表格但是打印却只能打印一个单元格

    excel表格中打开可以显示整个表格但是打印却只能打印一个单元格 如下图显示 解决办法 2007 版菜单栏上 ----->页面布局----->打印区域----->取消打印.即可正常. ...

  8. 计算机文件右击怎么显示打开方式,修复鼠标右键点击文件打开方式在win10中没有反应...

    当我们在电脑中需要打开文件夹的不同设置的选项的时候是可以直接在鼠标的右键中进行设置打开的,选择文件的不同的打开的时候有小伙伴在win10电脑中点击右键发现没有反应的情况遇到这个问题我们怎么恢复右键的使 ...

  9. opencv中打开摄像头显示黑屏

    <span style="font-size:18px;">搞图像处理时,在QT编程环境下配置了opencv3.0版本.之后尝试打开笔记本摄像头,程序运行之后窗口一直是 ...

最新文章

  1. java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
  2. DES加密算法安全性评估
  3. python大佬养成计划----flask_sqlalchemy操作数据库
  4. SAP PM 入门系列14 – PM模块与其它模块的集成
  5. android从放弃到精通 第五天 excellent
  6. 用tcc编译一个c语言写的简单代码hello world
  7. 室内装修隐蔽工程验收知识拓展_装修之前先看知贤,『装修微课堂』室内装修隐蔽工程详解,装修小白防坑避雷手册!...
  8. 浅谈五大Python Web框架
  9. mybatis学习(6):IntelliJ IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行
  10. go编译so win10_windows搭建Go语言交叉编译环境
  11. _Linux自编译云锁Web网站防火墙,看完小白也能保护网站安全
  12. Java序列化机制原理,java面试题,java基础笔试题,BAT
  13. char类型怎么输入 c语言_C语言的标准 “输入输出”!今天是你学C语言的第几天?...
  14. 第一次作业-四则运算
  15. 可以玩java游戏的软件_手机上能玩电脑游戏的软件有哪些 用什么软件可以在手机上玩电脑游戏...
  16. 基于python对B站缓存视频的批量复制,重命名
  17. 六级,我一定要考好!
  18. udp洪水攻击java_Linux网络编程--洪水攻击详解
  19. FAT32、NTFS、exFAT的区别
  20. 织梦DedeCMS标签全攻略,织梦DedeCMS标签大全

热门文章

  1. 2023广西大学计算机考研信息汇总
  2. 缩水测试软件,快速检测并修复缩水U盘的简单方法
  3. Tableau绘制符号地图--不同国家超市销售额与利润比率图
  4. screenflow从零开始的安装教程
  5. shutdown与poweroff
  6. VMware Workstation 15 界面语言改成中文或其他语言的方法
  7. 魅蓝note1安装xposed问题及方法
  8. 阻塞非阻塞与同步异步的区别?
  9. 竣达技术丨中小机房远程网络在线动环监控方案
  10. Linux:进程和计划任务管理