第一版是針對 Lua 5.0 編寫的。儘管在很大程度上仍然適用於後續版本,但仍有一些差異。
第四版針對 Lua 5.3,可在 Amazon 和其他書店購買。
購買這本書,您同時也能支持 Lua 專案


24.3.2 – 函式庫程式碼中的錯誤處理

Lua 是一種安全的語言。這表示不論您寫什麼,不論它有多麼錯誤,您都可以根據 Lua 本身來理解程式的行為。此外,錯誤也會根據 Lua 來偵測和說明。您可以將它與 C 做對比,在 C 中,許多錯誤程式的行為只能根據底層硬體來說明,而錯誤位置則以程式計數器提供。

每當您將新的 C 函式新增到 Lua 時,您可能會破壞這種安全性。例如,像 poke 這樣的函式,它會將任意位元組儲存在任意記憶體位址,可能會導致各種記憶體損毀。您必須努力確保您的附加元件對 Lua 是安全的,並提供良好的錯誤處理。

正如我們先前所討論的,每個 C 程式都有自己的錯誤處理方式。然而,當您為 Lua 編寫函式庫函式時,有一個處理錯誤的標準方式。每當 C 函式偵測到錯誤時,它會呼叫 lua_error(或更好的 luaL_error,它會格式化錯誤訊息,然後呼叫 lua_error)。lua_error 函式會清除 Lua 中需要清除的所有內容,並跳回產生執行緒的 lua_pcall,同時傳遞錯誤訊息。