At the risk of stating the obvious... Because you're not catching the Exception you throw in your catch block? Or, perhaps, something else is being thrown in the try block that isn't an OracleException.
What are you expecting to happen?
Just to be totally clear (to make sure that we're on the same page), an exception that's thrown but never caught will result in an unhandled exception (by definition). Throwing an exception from within a catch block is identical to throwing it from anywhere else; there still needs to be a try-catch somewhere to catch it. For example, this exception will be caught:
try { throw new Exception("Out of cheese error"); // Caught below } catch (Exception) { }
But this one results in a new exception being propogated:
try { throw new Exception("Out of cheese error"); // Caught below } catch (Exception) { throw new Exception("418: I'm a teapot"); // Never caught }
And this code catches both exceptions:
try { try { throw new Exception("Out of cheese error"); // Caught in inner catch } catch (Exception) { throw new Exception("418: I'm a teapot"); // Caught in outer catch } } catch (Exception e) { Console.WriteLine(e.Message); // "418: I'm a teapot" }