diff --git a/README.html b/README.html index dc7567fd..52a5b5d1 100644 --- a/README.html +++ b/README.html @@ -909,6 +909,7 @@ Files are no longer hosted at LuaForge.
  • Fix os.time() to return a number of seconds.
  • Implement formatting with os.date(), and table argument for os.time().
  • Refactor APIs related to compiling and loading scripts.
  • +
  • Let errors thrown in debug hooks bubble up to the running coroutine.
  • diff --git a/src/core/org/luaj/vm2/LuaError.java b/src/core/org/luaj/vm2/LuaError.java index 7c6c5540..cbe68eb8 100644 --- a/src/core/org/luaj/vm2/LuaError.java +++ b/src/core/org/luaj/vm2/LuaError.java @@ -21,7 +21,6 @@ ******************************************************************************/ package org.luaj.vm2; -import org.luaj.vm2.lib.DebugLib; /** * RuntimeException that is thrown and caught in response to a lua error. diff --git a/src/core/org/luaj/vm2/LuaThread.java b/src/core/org/luaj/vm2/LuaThread.java index a9450437..0bee9bb8 100644 --- a/src/core/org/luaj/vm2/LuaThread.java +++ b/src/core/org/luaj/vm2/LuaThread.java @@ -24,8 +24,6 @@ package org.luaj.vm2; import java.lang.ref.WeakReference; -import org.luaj.vm2.lib.DebugLib; - /** * Subclass of {@link LuaValue} that implements * a lua coroutine thread using Java Threads. diff --git a/src/core/org/luaj/vm2/lib/DebugLib.java b/src/core/org/luaj/vm2/lib/DebugLib.java index e6e23947..860771c9 100644 --- a/src/core/org/luaj/vm2/lib/DebugLib.java +++ b/src/core/org/luaj/vm2/lib/DebugLib.java @@ -25,6 +25,7 @@ import org.luaj.vm2.Globals; import org.luaj.vm2.Lua; import org.luaj.vm2.LuaBoolean; import org.luaj.vm2.LuaClosure; +import org.luaj.vm2.LuaError; import org.luaj.vm2.LuaFunction; import org.luaj.vm2.LuaNil; import org.luaj.vm2.LuaNumber; @@ -432,8 +433,10 @@ public class DebugLib extends TwoArgFunction { t.inhook = true; try { t.hookfunc.call(type, arg); - } catch (Exception e) { - e.printStackTrace(); + } catch (LuaError e) { + throw e; + } catch (RuntimeException e) { + throw new LuaError(e); } finally { t.inhook = false; }