It should be obvious from reading the code how the flow of control goes. The outer catch, as you have already seen, is not called.
By the way: If you change the outer catch to
catch (IOException ex), you get a "never thrown" compiler error. That doesn't seem to happen for plain simple Exception.
You should use a try-finally nested inside a try-catch for reading or writing with Readers. The only use of nested try-catch I can think of offhand, however, is to ask questions on CodeRanch about
Maybe somebody else can think of a more sensible use.