簡體   English   中英

當我的lua代碼拋出錯誤時,為什么不能捕獲luabind :: error異常?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM