有没有办法在Lua中模拟PHP的“@”修改器?
2011-4-28 8:6:56
收藏:0
阅读:84
评论:2
有一件事在 PHP 中我个人非常喜欢使用- @ 修改器,在安全的情况下将任何类型的异常/错误转换为 null(当然,在我真正不关心处理任何错误的情况下)。
问题是-如何在 Lua 中模仿这种行为?也许有一种方法可以在特别准备好的表上模拟类似的效果(使用特殊的元表),但是似乎很难使用所有__*内容正确。
重点在于使其尽可能接近语法糖。有什么建议吗?
UPD:假设开发人员完全了解错误抑制的所有问题(或者开发人员只是为了黑暗皇帝的缘故,在星系中压制了所有错误)。
原文链接 https://stackoverflow.com/questions/5789670
点赞
stackoverflow用户312586
我对 PHP 中的 @
标记不熟悉,但我在 Ruby(... rescue nil
)和 Java(try{...}catch(Exception e){}
)中看到过这种“不抛出错误”的行为。
假设这是你想要的,Lua 中最类似的东西是 pcall
(参见PiL 8.1)。
如果“你想要安全”的代码在一个名为 foo
的函数中,那么 foo(bar, baz)
的“安全版本”将是 pcall(foo, bar, baz)
。
如果你没有一个函数,而是一堆代码,那么你将不得不使用 pcall
加上一个匿名函数。
pcall(function() <your code here> end)
我提醒你,一般来说,正如其他人所说,没有很好的理由“丢弃”错误。
如果你这样做,我建议你至少在你的代码中明确说明它,比如使用注释:
if not pcall(foo, bar, baz) then
-- Do nothing on error.
end
否则,很容易忘记 pcall
调用。
2011-04-27 13:36:15
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
并不是对这个问题的真正回答,但我觉得有必要用“最佳答案”来回答这个问题。你永远不应该使用错误抑制。最坏的情况是你会在发布区域改变你的应用程序的错误报告。最好的办法是:处理它们!