I just finished implementing exceptions in the Higgs interpreter, complete with support for the finally block and optional catch clauses. This was difficult to implement because the semantics of JavaScript (and Java) say that every form of control flow leaving a try or catch block must execute the corresponding finally blocks (and there might be more than one). Since my interpreter uses an intermediate representation built on basic blocks and sequences of instructions, I had to compile finally blocks in-line at every point where they would be run, which meant handling a multitude of corner cases.