我怎么知道在c# - luainterface中执行了哪个字符串块?

时间:2015-05-29 05:56:45

标签: c# lua luainterface

我正在运行C# - lua项目。该项目在lua部分具有所有逻辑,c#部分包含内置控制台以显示结果并接受输入。所以在lua部分几乎发生了调试。我的lua代码如下所示:

[lua]
#region main
1  foo(blah)
2  bar(blah) -- bad argument, will provoke error
#end

#region functionsholder
1  function foo(argument)
2    --do something
3  end
4  function bar(argument)
5    --do something with argument.
6  end
#end

然后在我的项目中,c#拥有两个字符串块,即main和functionsholder。然后我的c#代码运行如下:

[c#]
1   public void runscript(string name)
2   try
3   {
4       lua.Dostring(name);
5   }
6   catch (LuaException e)
7   {
8       Console.Writeline("An unhandled exception occured at string chunk " + name + ".");
9       Console.WriteLine(e);
10  }
11  runscript("functionsholder"); // need to load functions first.
12  runscript("main"); // start main code block, and by above, this result in exception.

问题(我认为)是日志消息。

An unhandled exception occured at string chunk main.
LuaInterface.LuaException: [string "chunk"]:5: bad argument #1 to 'pairs' (table expected, got nil)
   위치: LuaInterface.Lua.ThrowExceptionFromError(Int32 oldTop)
   위치: LuaInterface.Lua.DoString(String chunk)
   위치: SomeProject.SomeClass.runscript(String name) 파일 d:\Git\SomeSolution\SomeProject\SomeClass.cs:줄 4

要调试此代码,我认为知道代码失败的位置很重要。但是我无法获得正确的信息,因为LuaException只提供行号的信息,而不是块名。我的错误处理代码提供了一个块名称,但它没用,因为异常被抛出到其他块中。

感谢您耐心阅读到目前为止,我的问题在这里(并且显而易见):我如何才能收到正确的错误消息?我想要两个信息,即1)抛出的异常行数。 2)确切行所属的字符串块名称。

0 个答案:

没有答案