We know that according to the specification, when an exeption is thrown, the control flow goes to the handler of the exeption. If the exeption is thrown in a synchronized block, the VM must do a "monitorexit" operation to release the lock. But I took a look at some control flow graphs(HIR) created by JIT, and didn't find any "monitorexit" instructions when an exeption is thrown in a synchronized block. Could any one tell me when and how the "monitorexit" operation is done when an exeption is thrown in a synchronized block?