diff -r 5452b9fbd253 -r a9be982d9b9c vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Dec 31 12:44:51 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Dec 31 17:50:27 2012 +0100 @@ -1585,6 +1585,7 @@ private void generateCatch(TrapData[] traps) throws IOException { out.append("} catch (e) {\n"); + int finallyPC = -1; for (TrapData e : traps) { if (e == null) { break; @@ -1596,10 +1597,14 @@ out.append("gt=" + e.handler_pc + "; stA0 = e; continue;"); out.append("}\n"); } else { - //finally - todo + finallyPC = e.handler_pc; } } - out.append("throw e;"); + if (finallyPC == -1) { + out.append("throw e;"); + } else { + out.append("gt=" + finallyPC + "; stA0 = e; continue;"); + } out.append("\n}"); } }