6

JSON を解析するためにLuaJSONを採用しました。parse 呼び出しは次のようになります。

-- file.lua
local res = json.decode.decode(json_str)
if res == nil then
    throw('invalid JSON')
end
...

しかし、 のフォーマットが不適切な場合、json_strはLuaJSON 内で停止し、 file.luadecode()の実行を中断します。代わりに制御フローを関数に戻して、カスタム エラー通知を提供できるようにします。

LuaJSON API を参照しましたが、コールバックのようなエラー処理はありません。file.lua 内からLuaJSON内で発生したエラーを処理できるようにする Lua メカニズムはありますか?

4

2 に答える 2

9

ここでの問題は、エラーが発生した場合にdecode関数が呼び出されることです。error

これは、例外処理メカニズムに相当する Lua の機能です。あなたがしたいことは、プロテクトモードdecodeで関数を呼び出すことです:

local success, res = pcall(json.decode.decode, json_str);
if success then
    -- res contains a valid json object
    ...
else
    -- res contains the error message
    ...
end
于 2013-06-04T08:53:51.803 に答える