我試圖改進運行Lua腳本的程序中的錯誤處理。 簡化版:Lua堆棧回溯中缺少函數名稱
function _errH(msg)
print(msg .. "\n" .. debug.traceback(nil, 1))
end
function _main()
-- cause some random error
print(a-2)
end
function main()
xpcall(_main, errH)
end
main()
給了我以下調用堆棧(請忽略了錯誤的行號):
stack traceback:
[string ""]:7428: in function '__sub'
[string ""]:7651: in function <[string ""]:7432>
[C]: in function 'xpcall'
[string ""]:7658: in function 'main'
[string ""]:7928: in main chunk
現在,我不知道爲什麼會有[string ""]
無處不在。
有什麼方法可以影響這些缺失的文字嗎?除了定義它們之外,還必須命名這些功能嗎? 爲什麼我看到in function '__sub'
而不是in function '_main'
例如?