[openstack-dev] [Review] Use of exception for non-exceptional cases

Dolph Mathews dolph.mathews at gmail.com
Wed Jul 10 18:30:35 UTC 2013


On Wed, Jul 10, 2013 at 1:01 PM, Nachi Ueno <nachi at ntti3.com> wrote:

> HI folks
>
> I would like to ask the review criteria in the community.
>
> Should we use exception for non-exceptional cases when we can use
>  parameter checking?
>
> Example1:  Default value for array index
>
> try:
>    value = list[5]
> except IndexError:
>     value = 'default_value'
>

I can't get past this specific example... how often do you find yourself
needing to do this, exactly? Generally when you use a list you either FIFO
/ LIFO or iterate through the whole thing in some fashion.

I'd be tempted to write it as dict(enumerate(my_list)).get(3,
'default_value') just because you're treating it like a mapping anyway.


>
> This can be also written as,
>
>      list_a[3] if len(list_a) > 3 else 'default_value'
>
> "ask for forgiveness, not permission" is one of way in python,
> however, on the other hand, google python code style guide says,
> -------------
> Minimize the amount of code in a try/except block. The larger the body
> of the try, the more likely that an exception will be raised by a line
> of code that you didn't expect to raise an exception. In those cases,
> the try/except block hides a real error.
> ---------------
> http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Exceptions


+1 for this, but it's not really intended to provide an answer your
question of approach.


>
>
> Personally, I prefer not to use exception for such cases.
>
> Best
> Nachi
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



-- 

-Dolph
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130710/489bdf37/attachment.html>


More information about the OpenStack-dev mailing list