Please see the following code and explain the output behavior.
public class MyFinalTest {
public int doMethod(){
try{
throw new Exce
Finally block always get executed unless and until System.exit() statement is first in finally block.
So here in above example Exection is thrown by try statement and gets catch in catch block. There is return statement with value 5 so in stack call value 5 gets added later on finally block executed and latest return value gets added on top of the stack while returning value, stack return latest value as per stack behavior "LAST IN FIRST OUT" so It will return value as 10.
This is an easy question if you remember the low level layout of the VM.
If unsure about things like this, fall back to your understanding of the underlying system (ultimately going to assembler level).
(funny sidenote)