NLua处理c#异常
本文关键字:异常 处理 NLua | 更新日期: 2023-09-27 18:10:35
我正在寻找现有c#应用程序的NLua脚本,其中从lua调用的c#函数可能会抛出异常。
到目前为止,我找到了这个:
-
如果lua代码没有处理调用的c#函数中的异常,NLua包装并重新抛出它,以便可以在c#级别处理。
-
如果lua代码通过xpcall"捕获"异常,我发现没有办法访问异常的详细信息(例如-.Message)
前者允许我得到一个debug.traceback(),一个lua级别的stackdump,但是我没有得到异常的细节。后者提供了异常,但没有办法获得Lua堆栈转储(我在. source中获得Lua文件和行,但这还不够)。
问题是:
-
我可以在NLua"xpcall"错误处理程序中获得c#异常的详细信息吗?
-
或者,我可以处理一个c#异常在NLua(与创建lua堆栈转储的意图)和重新抛出它?
-
或者我可以得到一个lua堆栈转储从某种程度上从"lua状态"时,例如luastate . dofile("myScript.lua")导致异常?
任何帮助都会很感激。NLua似乎对我的想法近乎完美,如果我能整理异常处理。
您需要从脚本中使用pcall
。NLua将包装异常并返回pcall
返回的第二个值。
error, exception = pcall (someFunction)
if (not error) then
print(exception.Message)
end