         b.push temp
 
 compile_obj_handlers = {
+  # pseudo-opcode, generates the beginning of a try block
+  'try': { compile: (b) -> b.add_stmt "try { //" }
   aconst_null: { compile: (b) -> b.push new Primitive "null"; }
   iconst_m1: { compile: (b) -> b.push new Primitive "-1"; }
   iconst_0: { compile: (b) -> b.push new Primitive "0"; }

      if oc.offset?
        targets.push idx + oc.byte_count + 1, idx + oc.offset

    targets.sort((a,b) -> a - b)
    labels = _.uniq(targets)



    rv.concat postordered.reverse()

  compile: (prev_stack, prev_locals, exc_catcher=false) ->
    return if @visited

    @visited = true

    # the first block has its local vars set from the function params
    unless @start_idx == 0
      unless exc_catcher
        @stack =
          for s,i in prev_stack
            if s? then new StackVar i else null
      @locals =
        for l,i in prev_locals
          if l? then new LocalVar i else null
