我最近在我的项目中实现了lua脚本,并且用户可以在游戏编辑器中输入自定义脚本,但这里有问题......他们可以轻松地输入一些随机的东西,该程序将与例外...C#在执行之前检查Lua脚本
所以我的问题:是否有可能检查 lua脚本之前执行它?最好指向输入脚本不正确的确切位置。
我知道我可以添加“尝试”块,但它不是最好的解决方案。
UPD:如评论请求:我使用的是 “LuaInterface” 建立NET 4.
我最近在我的项目中实现了lua脚本,并且用户可以在游戏编辑器中输入自定义脚本,但这里有问题......他们可以轻松地输入一些随机的东西,该程序将与例外...C#在执行之前检查Lua脚本
所以我的问题:是否有可能检查 lua脚本之前执行它?最好指向输入脚本不正确的确切位置。
我知道我可以添加“尝试”块,但它不是最好的解决方案。
UPD:如评论请求:我使用的是 “LuaInterface” 建立NET 4.
见error handling手册中,特别是lua_load
。这将捕获编译时错误。然后,请参阅lua_pcall
以及可能的luaL_traceback
来处理运行时错误。
哦,太棒了!这正是我想要做的。 – NewProger
请注意'lua_load'只检查语法错误。它不能确保脚本的执行不会造成任何麻烦,因为这是不可能的。另外,如果你想在程序之外检查一个脚本,你可以使用'luac'来检查语法; 'luac -p
您可能想要熟悉异常处理。你错过了很多你的问题中的重要信息,比如你使用了哪种类型的lua脚本库,所以我不能告诉你任何具体的东西(我对技术不熟悉,只是搜索了一些)。我猜如果你发现一个异常,它会提供一些关于是什么引起的,甚至是确切位置的附加信息。 – Robert
异常处理也是面向对象编程的诸多优点之一,您可以通过正确使用它来免除许多头痛。 – Robert
@Robert hm ...但是我怎么知道脚本中捕捉异常究竟出了什么问题?我希望有像“评估脚本执行之前”的东西:) – NewProger