aboutsummaryrefslogtreecommitdiffstats
path: root/deps/sol2/examples/source/exception_handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'deps/sol2/examples/source/exception_handler.cpp')
-rw-r--r--deps/sol2/examples/source/exception_handler.cpp54
1 files changed, 0 insertions, 54 deletions
diff --git a/deps/sol2/examples/source/exception_handler.cpp b/deps/sol2/examples/source/exception_handler.cpp
deleted file mode 100644
index 5fdb4dd..0000000
--- a/deps/sol2/examples/source/exception_handler.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#define SOL_ALL_SAFETIES_ON 1
-#include <sol/sol.hpp>
-
-#include "assert.hpp"
-
-#include <iostream>
-
-int my_exception_handler(lua_State* L, sol::optional<const std::exception&> maybe_exception, sol::string_view description) {
- // L is the lua state, which you can wrap in a state_view if necessary
- // maybe_exception will contain exception, if it exists
- // description will either be the what() of the exception or a description saying that we hit the general-case catch(...)
- std::cout << "An exception occurred in a function, here's what it says ";
- if (maybe_exception) {
- std::cout << "(straight from the exception): ";
- const std::exception& ex = *maybe_exception;
- std::cout << ex.what() << std::endl;
- }
- else {
- std::cout << "(from the description parameter): ";
- std::cout.write(description.data(), description.size());
- std::cout << std::endl;
- }
-
- // you must push 1 element onto the stack to be
- // transported through as the error object in Lua
- // note that Lua -- and 99.5% of all Lua users and libraries -- expects a string
- // so we push a single string (in our case, the description of the error)
- return sol::stack::push(L, description);
-}
-
-void will_throw() {
- throw std::runtime_error("oh no not an exception!!!");
-}
-
-int main() {
- std::cout << "=== exception_handler ===" << std::endl;
-
- sol::state lua;
- lua.open_libraries(sol::lib::base);
- lua.set_exception_handler(&my_exception_handler);
-
- lua.set_function("will_throw", &will_throw);
-
- sol::protected_function_result pfr = lua.safe_script("will_throw()", &sol::script_pass_on_error);
-
- c_assert(!pfr.valid());
-
- sol::error err = pfr;
- std::cout << err.what() << std::endl;
-
- std::cout << std::endl;
-
- return 0;
-}