我知道lua_call()
或lua_pcall()
之間的基本區別,後者提供了更多的錯誤細節。
還有其他區別嗎?如何決定使用哪個?如何決定使用lua_call()或lua_pcall()?
6
A
回答
5
使用lua_pcall
當你需要來處理代碼中當時的潛在錯誤。否則,使用lua_call
並讓錯誤向上移動呼叫鏈。無需使用lua_pcall
無處不在。
lua_call
快於lua_pcall
。
只要確保頂部至少有一個lua_pcall
,或者在發現任何Lua錯誤時,您的應用程序將會出現混亂並退出。
5
使用lua_pcall
,除非你有一些具體表現情況的所有問題。然後使用lua_call
。但是,再次,只有當您有配置文件您的應用程序,並發現具體lua_call
將緩解的性能問題。
如果在lua_call
期間Lua引發Lua錯誤,那麼您的應用程序已經非常糟糕了。所以你需要確保在可能的情況下使用lua_pcall
。
相關問題
- 1. 如何決定scipy.integrate.simps或numpy.trapz?
- 2. 運行lua_pcall異步
- 3. 如何決定何時使用XSD或DTD?
- 4. lua_pcall在這裏做什麼?
- 5. lua_pcall錯誤消息丟失
- 6. 如何決定是否使用IS A或HAS A關係
- 7. 如何決定使用什麼 - 雙精度或小數?
- 8. 如何決定是否使用ER或UML進行建模?
- 9. 如何決定是否使用RDBMS,Doc/Obj ODBMS或Graph?
- 10. Rails如何決定使用PUT或POST方法呈現表單?
- 11. 解決使用主定理或擴大
- 12. 決定使用類比或比較器
- 13. 使用KEY或UNIQUE KEY的決定
- 14. 如何決定使用何種行動
- 15. 在C++函數中使用lua_call很多次
- 16. 如何決定方法或事件?
- 17. netMQ或者zeroMQ如何決定發送
- 18. 如何決定使用哪種佈局?
- 19. 如何決定是否使用GPU卡?
- 20. 你如何決定使用哪個ORM?
- 21. DispatchMessage如何決定使用哪個WndProc?
- 22. 按鈕啓用或禁用:webdriver如何決定?
- 23. Spring XD:如何決定何時使用流或批處理作業?
- 24. 使用Xcode5時,如何決定應用程序的外觀? iOS7或iOS6風格
- 25. 如何在決策樹中使用rpart決定'minsplit'?
- 26. Selenium3.4.0-Python3.6.1:在使用unittest的Selenium-Python綁定中我如何決定何時使用self.assertIn或assert
- 27. lua_pcall去哪了? (LUA 5.2.0在OSX獅子)
- 28. 彈簧數據JPA如何決定調用entityManager.persist(...)或entityManager.merge(...)方法
- 29. OneSignal如何決定使用哪個p12文件(開發或分發)?
- 30. JPA如何確定使用@OneToOne或@OneToMany
「呼叫鏈」是什麼意思?這隻適用於如果調用lua代碼是由C代碼進行的,而C代碼又是由lua調用的?我有點困惑,因爲lua可以在任何時候失敗(分配錯誤),並且C代碼可能取決於被調用者實際上已經執行了它被稱爲執行的動作... –
@R ..,可以忽略從Lua調用的C代碼中的錯誤,因爲它們將在Lua中進行報告。大多數情況下,您只需保護從C到Lua的第一個呼叫,例如在運行腳本時。 – lhf
「*只要確保在頂部或您的應用至少有一個lua_pcall *」這假定Lua負責應用程序,而不是調用Lua執行特定任務的應用程序。 –