2011-11-04 54 views
2

我正在構建一套用於Lua解釋器的嵌入式實例(目標受衆是特定產品的用戶)的通用庫。假設我沒有權限更改Lua可執行文件的功能,並且只有基本的標準Lua庫(數學,字符串,...,異常不是io)。什麼是用純Lua表示錯誤的慣用方法?

在純粹的Lua庫中處理運行時錯誤的習慣用法是什麼?

我已經考慮過返回nil,但這並不表示出了什麼問題,特別是如果錯誤發生在深層嵌套的地方。我的下一個想法是返回兩個值,nil和一個錯誤代碼或描述。我還考慮過一組類似於Windows API的GetLastError(和相應的SetError)的全局函數。

你用什麼?你認爲各種方法的各種優點/缺點是什麼?我是否應該考慮一些更激進的事情,比如在pcall中包裝所有內容並故意索引userdata以導致錯誤?

回答

6

無法恢復的錯誤應該放棄執行。對於那些,請致電error。否則,返回nilfalse,錯誤消息是標準的Lua方式。

相關問題