asit a écrit :
> On Nov 7, 10:36 pm, Bruno Desthuilliers
> <[email protected]> wrote:
>> asit a écrit :
>>
>>> In my program I want to catch exception which is caused by accessing
>>> NoneType object.
>>> Can anyone suggest me how this can be done ??
>> Not without the minimal working code exposing your problem, or the full
>> traceback you got. Merely "accessing NoneType object" doesn't by itself
>> raise any exception... I suspect you get the None object where you
>> expected something else and try to access an attribute of this
>> 'something else', and ends up getting an AttributeError, but there are
>> other possible scenarii that might fit your (very poor) description of
>> the problem, so no way too help you without more informations. As a
>> general rule, remember that the traceback is actually meant to *help*
>> finding out what went wring.
>
> I could have described the error, but the problem is that it's
> dependent of a third party library..
This more often than not translates to "dependent of a wrong use of a
3rd part library".
> Let me write the code here...
>
> import twitter
>
> api = twitter.Api('asitdhal','swordfish')
I hope this is not your actual login.
> users = api.GetFriends()
> for s in users:
> print
> print "##########################################"
> try:
> print "user id : " + str(s.id)
Please learn to use print and string formatting. Here are two ways to
get rid of the need to use str():
1/ print "user id : %s" % s.id
2/ print "user id : ", s.id
> print "user name : " + s.name
> print "user location : " + s.location
> print "user description : " + s.description
> print "user profile image url : " + s.profile_image_url
> print "user url : " + s.url
> print "user status : " + str(s.status)
> except TypeError:
> pass
Silently passing exception is 99.999 out of 100 a very stupid thing to do.
>
> look at the except TypeError.
Yes, I've seen it. It's stupid, and actually make debugging harder. Any
statement in this try block could raise a TypeError if the looked up
attribute of 's' is not a string. Python is NOT php, and will not
happily adds apples and parrots - you can only concatenate strings with
strings, not with ints or None or whatever...
> This is supposed to catch only exception
> thrown by NoneType.
Please get your facts straight.
1/ The NoneType doesn't "throw" (the appropriate python term is "raise")
any exception by itself
2/ this except clause will catch any TypeError. Try this:
try:
x = "aaa" + 42
except TypeError, e:
print "This has nothing to do with NoneType"
> please help me.
Help yourself and read the FineManual. Then make appropriate use of
string formatting (your best friend for simple formatted outputs)
instead of useless string concatenations.
--
http://mail.python.org/mailman/listinfo/python-list