asit a écrit :
> On Nov 7, 10:36 pm, Bruno Desthuilliers
> <bdesth.quelquech...@free.quelquepart.fr> 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

Reply via email to