Issue229368

classification
Title: __getitem__ expected, but not defined for java exc.
Type: Severity: normal
Components: Library Versions:
Milestone:
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: bckfnn, cgroves
Priority: low Keywords:

Created on 2001-01-19.11:18:25 by bckfnn, last changed 2007-07-25.06:46:30 by cgroves.

Messages
msg265 (view) Author: Finn Bock (bckfnn) Date: 2001-01-19.11:18:25
>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.
msg266 (view) Author: Charlie Groves (cgroves) Date: 2007-07-25.06:46:30
The new socket module re-raises Java exceptions as Python exceptions, so this is fixed.
History
Date User Action Args
2001-01-19 11:18:25bckfnncreate