luajava的错误信息输出
最近在填新坑, 打算用lua作为脚本语言, 于是选择了luajava来跑脚本.
始终我对lua不熟, 错误是难免的了, 不料luajava居然没有输出错误信息orz(事实上连普通的输出都没找到, 反正我直接写了个print函数…)
既然找不到输出, 那我只好想办法把luajava的错误信息转去调用自己写的print了, 于是我想到了或许可以像Java中的try ... catch ...
来拦住错误, 然后用 getStackTrace()
之类的方法找到调用栈, 最后输出.
顺着这思路, 我找到了lua的xpcall(<fun:function>, <callback:function>)
和debug.traceback([errMsg:string])
, 前者接受一个函数和一个出现错误时的执行回调函数, 返回执行的成功与否和错误信息, 后者可选地接受一个错误信息, 并返回错误信息和调用栈.
那么剩下的就是把程序本体塞到xpcall中, 这个倒没多少难度:
xpcall( -- $str是我传入的程序本体 function() $str end, -- err就是错误信息 function(err) -- _print就是我写的, kotlin的print函数 _print(debug.traceback(err)) end)
输出: