From: <no...@so...> - 2001-01-19 11:18:22
|
Bug #129368, was updated on 2001-Jan-19 03:18 Here is a current snapshot of the bug. Project: Jython Category: Library Status: Open Resolution: None Bug Group: None Priority: 5 Submitted by: bckfnn Assigned to : nobody Summary: __getitem__ expected, but not defined for java exc. Details: >Traceback (innermost last): > File "FutureSourceSpider.py", line 86, in ? > File "c:\software\jython\Lib\urllib.py", line 68, in urlretrieve > File "c:\software\jython\Lib\urllib.py", line 198, in retrieve > File "c:\software\jython\Lib\urllib.py", line 169, in open > File "c:\software\jython\Lib\urllib.py", line 273, in open_http > File "c:\software\jython\Lib\httplib.py", line 430, in putrequest >AttributeError: __getitem__ > >The line throwing the error in inside an exception handler: > try: > self.send(str) > except socket.error, v: > # trap 'Broken pipe' if we're allowed to automatically >reconnect >>>>> if v[0] != 32 or not self.auto_open: <<<<< > raise > # try one more time (the socket was closed; this will >reopen) > self.send(str) > In CPython, the exception would have been a subclass of Exception, which defines a __getitem__ method. Index 0 would then contain the error number and index 1 an textual description. So the httplib will most likely work on CPython. OTOH, the java exception is just passed back from the jython socket module. This exception can not be indexed as a list, therefore we get the AttributeError: __getitem__. There is also no error number in a java exception. I'm not yet sure what the right long term solution is. Either httplib could test that the exception is a sequence before doing any indexing. Or the socket module could catch the java.net exception and reraise it as a SocketException. For detailed info, follow this link: http://sourceforge.net/bugs/?func=detailbug&bug_id=129368&group_id=12867 |