diff options
Diffstat (limited to 'src/LuaTask.cc')
-rw-r--r-- | src/LuaTask.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/LuaTask.cc b/src/LuaTask.cc index 12d4435..fc92cdf 100644 --- a/src/LuaTask.cc +++ b/src/LuaTask.cc @@ -60,6 +60,9 @@ void Balau::LuaTask::Do() { try { m_cell->run(L); } + catch (GeneralException e) { + m_cell->m_exception = new GeneralException(e); + } catch (...) { m_cell->setError(); } @@ -77,6 +80,20 @@ void Balau::LuaExecCell::exec(LuaMainTask * mainTask) { Task::operationYield(&m_event); } +void Balau::LuaExecCell::throwError() throw (GeneralException) { + if (!gotError()) + return; + + if (m_exception) { + GeneralException copy(*m_exception); + delete m_exception; + m_exception = NULL; + throw copy; + } else { + throw GeneralException("Unknown error"); + } +} + void Balau::LuaExecString::run(Lua & L) { L.load(m_str); } |