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