首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NLua处理C#异常

NLua处理C#异常
EN

Stack Overflow用户
提问于 2015-08-30 11:46:24
回答 1查看 752关注 0票数 1

我正在查看NLua来编写现有C#应用程序的脚本,其中从lua调用的C#函数可能会引发异常。

到目前为止,我发现了这个:

  • 如果lua代码不处理被调用的C#函数中的异常,则NLua包装并重新抛出它,以便在C#级别处理它。
  • 如果lua代码通过xpcall“捕获”异常,我就无法访问异常的详细信息(例如-.Message)。

前者允许我获得一个debug.traceback(),一个lua级别的堆栈转储,但是我不知道异常的细节。后者提供了异常,但无法获得(我在.Source中获得了Lua文件和行,但这还不够)。

问题是:

  • 我可以在一个C# "xpcall“错误处理程序(?)中获得NLua异常的详细信息吗?至少.Message字段,甚至更好的实际异常类型。
  • 或者,我可以在C#中处理NLua异常(目的是创建lua )并重新抛出它吗?
  • 或者,当e.g.luaState.DoFile("myScript.lua")导致异常时,我是否可以从"lua状态“中得到一个lua堆栈转储?

任何帮助都将不胜感激。如果我能理清异常处理的话,NLua似乎非常适合我的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-01 20:19:18

您需要使用脚本中的pcall。NLua将包装异常并返回由pcall返回的第二个值。

代码语言:javascript
复制
error, exception = pcall (someFunction)

if (not error) then
    print(exception.Message)
end

GitHub上的实例

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32296214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档