在執行lua指令碼時如何統一捕獲異常

2021-07-24 08:35:27 字數 753 閱讀 2415

相信很多lua開發者都知道,在lua裡面,可以使用pcall函式來捕獲異常,但pcall只能捕獲函式執行過程中丟擲的異常,如果我想捕獲整個指令碼執行過程中的異常呢?方法也是有的,我們可以使用loadfile這個函式來實現,並且需要加多乙個入口指令碼。

業務指令碼(hello_world.lua)

-- 使用error函式丟擲乙個異常

error()

入口指令碼(index.lua)

local cjson = require

"cjson"

local func = loadfile("/path/to/hello_world.lua")

local status,err = pcall(func) -- 把整個指令碼當作函式來執行

ifnot status then

local code = err.code and

tonumber(err.code) or

500local msg = err.msg and

tostring(err.msg) or

"unknown error occurred"

print(cjson.encode()) -- 輸出

end

有了入口指令碼之後,我們執行的時候就直接執行index.lua,然後它會自己去執行hello_world.lua裡的**,並且捕獲所有異常。

XLua框架學習(一)執行lua指令碼

using xlua luaenv luaenv newluaenv 開啟lua虛擬機器,最好乙個程式只有乙個虛擬機器 占用效能 luaenv.dostring print hello world 執行lua指令碼,輸出帶lua 字首 luaenv.dispose 關閉虛擬機器另一種輸出 unity...

如何檢視死鎖時在執行的SQL語句

指令碼一,查出鎖的關係,誰把誰鎖主了 set serveroutput on declare mes varchar2 2000 tmp id1 number 22 tmp id2 number 22 lk sid number 22 tmp mac varchar2 64 fl boolean b...

在執行SSIS包時,如何動態更新變數值

實現方式 若要動態更新變數,可以為變數建立配置,將這些配置部署到包中,然後在部署包時更新配置檔案中的變數值。這樣,在執行時,包就可以使用更新後的變數值。下面通過乙個簡單的例子來說明如何實現動態更新變數值。例子要求 把一張order表從遠端計算機例項 triy 2fe792bb5d sql2008de...