Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

finally{} ?

 
Seetharaman Venkatasamy
Ranch Hand
Posts: 5575
Eclipse IDE Java Windows XP
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi all,


finally is always executable block right? so,inside finally block ,we put DataBase connection closing stuff(con.close()..etc..) ...

my question is whether finally is used only for This pupose?..

please anyone can explain me...

Thanks & Regards,
seetharaman.v
[ May 31, 2008: Message edited by: Bear Bibeault ]
 
Mark Vedder
Ranch Hand
Posts: 624
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by seetharaman venkatasamy:
finally is always executable block right?

Correct. It gets executed regardless if an an exception is thrown in the corresponding try block. One thing to note is that if an exception is thrown and not handled within a finally block itself, code after that exception does not get executed. For example, in the following code:


if the doSomeCleanup() method causes an exception (say a NullPointerException), the close() method never gets called. This can sometimes lead to hard to track down bugs.

Originally posted by seetharaman venkatasamy:
so,inside finally block ,we put DataBase connection closing stuff(con.close()..etc..) ...

Correct.

Originally posted by seetharaman venkatasamy:

my question is whether finally is used only for This purpose?

Generally yes. A finally block's primary purpose is to prevent resource leaks or issues by doing appropriate cleanup. At a higher level, it is used to ensure a piece of code is executed, even if an exception occurs in the corresponding try block.

Take a look at the Java Tutorial page on The finally Block for some more information.
 
Mark Vedder
Ranch Hand
Posts: 624
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Just to clarify: When I said the code in a finally block is executed even if an exception occurs in the corresponding try block, that means that the code in a finally block gets executed any time the try block is exited, including if an exception occurs. So if the try block is exited due to a return statement, program flow, a break statement, or an exception, the code in the finally block is executed. I just wanted to make sure that was clear since I may not have worded it the best in my initial reply.
 
Rob Spoor
Sheriff
Pie
Posts: 20669
65
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
There are two (that I know of) exceptions that will cause a finally block not to be executed:
- when System.exit is called
- when the JVM crashes, e.g. because of a bug in some native code

Of course, in both cases there is no more JVM active to execute the block, so it's quite logical.
 
Seetharaman Venkatasamy
Ranch Hand
Posts: 5575
Eclipse IDE Java Windows XP
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks a lot mark

regards,
seetharaman.v
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic