3

エラーが発生するかどうかに応じて、以下pcall(function)が返される場合があります。

成功: true と関数の戻り値。
失敗: false とエラー。

私の場合、テーブルを返す関数を呼び出しているので、エラーがない場合は 2 番目の戻り値からデータを取得し、エラーが発生した場合はエラーを管理します。

どうすればアサートできますか?

最初にこう書きました。

local ret, data = pcall(the_function)
assert(ret, "Error: "..data)
-- use data from here on.

問題は、成功した場合でも assert メッセージが評価されるため、呼び出しが成功すると、Lua は文字列とテーブルの連結について文句を言うことです。

この問題は、 assert を使用してエラーを引用したいが、if not ret then assert(false, "...") end.

4

2 に答える 2

7

これを試して:

local ret, data = assert(pcall(the_function))
于 2013-08-14T11:53:55.733 に答える