What exactly does a finally
block in exception handling perform?
相关问题
- Delete Messages from a Topic in Apache Kafka
- Jackson Deserialization not calling deserialize on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
- Difference between Types.INTEGER and Types.NULL in
It holds code that should always be executed, regardless of whether an exception occurs.
For example, if you have opened a file, you should close it in the
finally
block to ensure that it will always be closed; if you closed it in thetry
block, an earlier exception would cause execution to jump straight to thecatch
block and skip closing the file.See the Java tutorials for more details.
finally keyword is used just to make sure that code present in finally block must execute in all circumstances irrespective of exception occurances.
for eg:
Note: In above case finally will always execute.
It executes no matter if you get into the
catch
block or not, meaning that is a great place for disposing of objects and doing other cleanups.The finally block always executes, regardless of whether or not the exception was thrown. The classic use example I can think of is closing files.
If you return a value in your
try
orcatch
block as well as in thefinally
block, keep in mind that thefinally
block's return value is what you'll end up with (the last block executed). That means if youtry
some code that does NOT throw anException
and is supposed to return a value, but yourfinally
block is also supposed to return a value, thefinally
block's value is what will actually be returned. This SO thread talks about that very point. I don't believe returning a value inside atry
orcatch
is usually necessary or the best idea. Also note thatSystem.exit(0)
kills the JVM and thus halts execution before anything else runs, which might render yourfinally
block unexecuted.Though there are many answers have already given that
finally
block is required to execute some piece of code in all the conditions whether there is some interruption due to exception, or some bad code, or you return the program control flow fromtry
block, Here I'm adding an example to explain the need offinally
block;Let's suppose you have borrowed a pen from your friend. You use it and then return ( I consider you a gentleman). Now whatever happens, you have to return the pen. You can handle various situations and you put most unavoidable condition in
finally
block.