Please see my answer here to get an idea on how to handle those exceptions. Some definitely do not need to be handled by the user.
Note: I would try and make the iteration count configurable and include some kind of protocol description / version string.