try catch finally misbehaving
(Or more likely my understanding is flawed)
In the below code I have a test function, that returns a string and
always triggers a null pointer exception.
The test function handles internally sqlexceptions and finally returns
a result.
I want the calling function to handle general exceptions (in this
example the null pointer exception).
However in this example the general exception handler is never
triggered (the function still returns "FAILED" as expected).
Why is this happening?
Thanks for any help.
Example code:
public static void main(String[] args)
{
try
{
String result=testFunc();
System.out.println("Function returned: "+result);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
// Should always fail and trigger null pointer exception
public static String testFunc()
{
String outcome="FAILED";
Object nullRef=null;
try
{
nullRef.toString();
if(false)
{
throw new SQLException();
}
outcome="SUCCESS";
}
catch (SQLException e)
{
outcome="SQLException";
}
finally
{
return outcome;
}
}
Output:
run:
Function returned: FAILED
BUILD SUCCESSFUL (total time: 0 seconds)