[英]Why can't I catch a luabind::error exception when my lua code throws an error?
當您從c ++調用LUA函數時,會出現運行時錯誤LuaBind拋出一個luabind :: error異常,您可以捕獲該異常,然后讀取堆棧以查看錯誤是什么。 我的調試器肯定會捕獲此異常,但是當我讓調試器繼續運行時,程序將立即終止,而不是在我的代碼中捕獲該異常。
LuaBind包含文件中的析構函數〜proxy_member_void_caller()引發了“ call_member.hpp”異常。
簡單的測試代碼會出現問題。 我正在將Xcode 5與LuaBind 0.9.1一起使用。
事實證明, 在析構函數中引發異常是一種不好的做法 。 使用C ++ 11時,析構函數隱式為noexcept(true)
,因此,如果發生異常,則程序終止。 LuaBind在析構函數中使用異常,因此在我的現代編譯器上,程序終止了。 將方法簽名編輯為:
~proxy_member_void_caller() noexcept(false) {}
允許您從c ++ 11中的LuaBind捕獲異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.