Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #104205

Re: How to get which attribute causes the AttributeError except inspecting strings?

From jmp <jeanmichel@sequans.com>
Newsgroups comp.lang.python
Subject Re: How to get which attribute causes the AttributeError except inspecting strings?
Date 2016-03-07 11:50 +0100
Message-ID <mailman.15.1457347821.10335.python-list@python.org> (permalink)
References <be90a047-38ea-4108-adb8-17fd7483fee5@googlegroups.com>

Show all headers | View raw


On 03/07/2016 09:46 AM, ZhangXiang wrote:
> In python3, when I write code like this:
>
> try:
>      fields = [getattr(Product, field) for field in fields.split(',')]
> except AttributeError as e:
>      raise HTTPError(...)
>
> I want to raise a new type of error giving a string telling the user which attribute is not valid. But I don't see any method I can use to get the attribute name except inspecting e.args[0].
>
> Could anyone give me a hint? Maybe I miss something.
>
> By the way, I don't quite want to change my code to a for-loop so I can access the field variable in exception handling.
>

Hi,

It is strange to morph an AttributeError in an HTTPError, anyway, you 
could write

try:
      fields = [getattr(Product, field) for field in fields.split(',')]
except AttributeError as e:
      raise HTTPError(str(e))

Or if you really need to write some custom message, you could parse the 
attribute error message for the attribute name.


# I've not tested this code !!
import re
try:
      fields = [getattr(Product, field) for field in fields.split(',')]
except AttributeError as e:
      # e.message should look like "class Foo has no attribute 'a'"
      attr = re.search(r"'(\w+)'", e.message).group(1)
      raise HTTPError('Custom message for the attribute %s' % attr)


Tbh I don't like it but it could do the job until someone raises you an 
attribute error with a different string pattern.

jm

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

How to get which attribute causes the AttributeError except inspecting strings? ZhangXiang <zhangyangyu0614@gmail.com> - 2016-03-07 00:46 -0800
  Re: How to get which attribute causes the AttributeError except inspecting strings? Peter Otten <__peter__@web.de> - 2016-03-07 10:48 +0100
    Re: How to get which attribute causes the AttributeError except inspecting strings? Xiang Zhang <zhangyangyu0614@gmail.com> - 2016-03-07 02:15 -0800
  Re: How to get which attribute causes the AttributeError except inspecting strings? jmp <jeanmichel@sequans.com> - 2016-03-07 11:50 +0100
    Re: How to get which attribute causes the AttributeError except inspecting strings? Xiang Zhang <zhangyangyu0614@gmail.com> - 2016-03-07 08:25 -0800
      Re: How to get which attribute causes the AttributeError except inspecting strings? Tim Golden <mail@timgolden.me.uk> - 2016-03-07 16:38 +0000
        Re: How to get which attribute causes the AttributeError except inspecting strings? Xiang Zhang <zhangyangyu0614@gmail.com> - 2016-03-07 09:01 -0800
      Re: How to get which attribute causes the AttributeError except inspecting strings? Mark Lawrence <breamoreboy@yahoo.co.uk> - 2016-03-07 17:26 +0000

csiph-web