2012-06-26 36 views
1

我已經在我的C程序中嵌入了一個Lua解釋器,並且我有一個簡單的問題,我似乎無法找到明確的答案。如何確定是否引發了Lua錯誤?

假設我有暴露到Lua如下C函數:

static int calculate_value(lua_State *L) 
{ 
    double x = luaL_checknumber(L, 1); 
    return 0; 
} 

如何確定(在C,此功能後調用)是Lua中調用luaL_checknumber時拋出一個錯誤?是否有一個錯誤消息只是坐在堆棧的頂部?是否有其他一些指標說明發生了錯誤?

回答

2

一般來說,你沒有。拋出錯誤的Lua函數使用setjmp/longjmp(或編譯爲C++的異常)將控制權返回給調用的Lua運行時。該錯誤將被呈現給您的calculate_value函數調用的Lua函數。

如果您想要以不同的方式處理參數錯誤,則不能使用Lua的luaL_check*函數。

1

如果通過Lua調用該函數,則可以使用pall。或者在運行調用該函數的Lua腳本之前使用lua_pcall

相關問題