I think you may want to re-read the section on exception handling in your text book (or whatever you are learning from).
In the try block, only one exception will be thrown. In your example, it is thrown when you call the constructor for Distance on line 52. When that exception is thrown, lines 53 and 54 don't get executed therefore the exception in function add never gets thrown (because the call to add was never made). We could say (and do not rely on this description as I am unsure of how accurate it is) that the flow of execution jumps from line 52 when the exception is thrown (technically the exception is thrown on line 31, but that isn't overly relevant) to line 56 where the first matching catch block is.
Once the exception is caught, it can be handled or ignored. After that the program will continue executing instructions that appear AFTER the catch black (meaning that it won't try to resume executing from where the exception was thrown), or, if we put it in a loop, it will continue with the loop.
Hopefully that will help clear things up a little bit. Be sure to read whatever material you have (text book, lecture slides etc...) on exceptions as well (there's also a pretty awesome tutorial on this site: http://www.cplusplus.com/doc/tutorial/exceptions/ )