don't use exceptions as control flow