In python, exceptions for control flow is how the language works. Think about that.
So doing this in python is ok (fastest way to check if a key is in a dict is catching KeyError for example, if I remember correctly)
All this theoretical mumbo jumbo is just noise. Very few of us are dealing with the type of programming every day where exceptions can actually become a noticeable bottleneck.