in inner catch block you are re-throwing the same exception, then control will go to the inner finally[since finally block is always executable regardless of exception], then outer catch, finally respectively.
it is the same as you are saying. When you run the attached program you get the result as mentioned below -
Inside finally 1
Inside finally 2
And the sequence of activities happens in the given order and the control would
1- Go to out try "Printing Begin"
2- Go to inner try "Printing Inside Try"
3- Go to inner catch, but as we are throwing the exception before executing system.out.println statement, we do not get "Inside Runtime" in the console
4- Go to finally block "Printing Inside finally 1"
5- Go to throwable catching block as the exception thrown from inside is not ClassCastException and print "Inside throwable"
6- Go to outer finally bock printing "Inside finally 2"
Please let me know which two statements you do not feel to be in correct sequence
To me the order seems fine, I think the reason you don't get what what you get is the the inner catch is only catching RuntimeException subclasses, whereas the other catches Throwable. What type of Exception are you throwing from your throwIt() method?