3.13. Compiling finally

(This section assumes a compiler generates class files with version number 50.0 or below, so that the jsr instruction may be used. See also §4.10.2.5.)

Compilation of a try-finally statement is similar to that of try-catch. Prior to transferring control outside the try statement, whether that transfer is normal or abrupt, because an exception has been thrown, the finally clause must first be executed. For this simple example:

void tryFinally() {    try {        tryItOut();    } finally {        wrapItUp();    }}

the compiled code is:

Method void tryFinally()0   aload_0             // Beginning of try block1   invokevirtual #6    // Method Example.tryItOut()V4   jsr 14              // Call finally block7   return              // ...

Get The Java® Virtual Machine Specification, Java SE 7 Edition, Third Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.