try/except KeyError vs "if name in ..."

Ramchandra Apte maniandram01 at gmail.com
Sun Oct 7 00:17:33 EDT 2012


On Sunday, 7 October 2012 01:12:56 UTC+5:30, Terry Reedy  wrote:
> On 10/6/2012 7:36 AM, Dave Angel wrote:
> 
> 
> 
> > The distinction in performance between the success and failure modes of
> 
> > the try/catch isn't nearly as large as one of the other responses might
> 
> > lead you to believe.  For example, a for loop generally terminates with
> 
> > a raise (of StopIteration exception), and that doesn't convince us to
> 
> > replace it with a while loop.
> 
> 
> 
> For statement generally loop many times, up to millions of times, 
> 
> without an exception being raised, whereas while statements test the 
> 
> condition each time around the loop. So the rule 'if failure is rare 
> 
> (less than 10-20%) use try', applies here. For if/them versus 
> 
> try/except, I don't worry too much about it.
> 
> 
> 
> -- 
> 
> Terry Jan Reedy

I use try and except when I need to raise exceptions e.g.:

try:
    value = vm.variables[name]
except KeyError:
    raise NameError("variable name not defined in VM's variables")



More information about the Python-list mailing list