Sobes.tech
Junior — Middle

Kas ressursite vabastamine finally plokknis on tagatud pärast try/catch täitmist?

sobes.tech AI

Vastus AI-lt

In Java, the finally block is guaranteed to execute after the try block and any corresponding catch blocks, except in some critical situations such as:

  • If the JVM terminates abruptly (for example, System.exit() called inside try or catch).
  • If the thread is interrupted or killed before finally executes.
  • If an infinite loop occurs in the try or catch block or the program hangs.

Under normal conditions, when the end of the try or catch block is reached, the finally block will execute and release resources, such as closing files or connections.

Example:

try {
    // work with resource
} catch (Exception e) {
    // handle exception
} finally {
    // release resource, guaranteed to execute
}

Therefore, the finally block is a reliable place to release resources, but not absolute, if the program terminates abruptly.