如何在lua解释器中正确调用异常

时间:2013-12-20 08:48:52

标签: exception-handling lua

我正在使用lua 5.1

如果我尝试将数字除以零,将零数字加到负数或模数为零,我希望lua计算失败并打印错误。

我所做的是改变计算定义,如此

#define luai_numdiv(L,a,b)  ((a)/(b))

这样的事情

inline lua_number luai_numdiv(lua_State *L, lua_Number a, lua_Number b){
    if(b != cast_num(0))
        return (a)/(b);
     else
        luaD_throw(L, LUA_ERRRUN);
     }

这根本不起作用。而且我认为它与luaD_Throw是一种不正确的方法,无法在lua中进行计算。

如何在lua中正确地使计算失败?

1 个答案:

答案 0 :(得分:1)

您的代码有效。它只是不会发出任何错误信息。

尝试在lua_pushliteral(L,"division by zero")之前添加luaD_throw(L,LUA_ERRRUN)

或使用luaG_runerror(L,"division by zero")代替luaD_throw(L,LUA_ERRRUN)来获取更详细的错误消息。