1

I'm running a script that communicates with a Rest API. Occasionally it's returning an exception that also returns During handling of the above exception, another exception occurred: for two additional exceptions. I'm trying to handle it using try/except blocks, but despite importing all three exceptions and coding for them in the blocks the script still fails.

The three exceptions are http.client.RemoteDisconnected, urllib3.exceptions.ProtocolError and requests.exceptions.ConnectionError.

So my import code is:

from requests.exceptions import ConnectionError
from http.client import RemoteDisconnected
from urllib3.exceptions import ProtocolError

My IDE recognizes the exceptions as imported, so that's probably fine. My except code is:

try
    [the thing]
except (InternalError, ConnectionError, RemoteDisconnected, ProtocolError) as e:
    self.lg.log(str(e) + ' ' + str(e.__traceback__) + " Some sort of connection or 
            internal error occured")

I have another exception on the same block (InternalError) and that one seems to handle fine.

The Traceback is really long but I'm not sure which parts are most important, so here's the whole thing

Traceback (most recent call last):
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\Rominus\AppData\Local\Programs\Python\Python36\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Users\Rominus\AppData\Local\Programs\Python\Python36\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Users\Rominus\AppData\Local\Programs\Python\Python36\lib\http\client.py", line 266, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\requests\adapters.py", line 445, in send
    timeout=timeout
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\util\retry.py", line 367, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\packages\six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\Rominus\AppData\Local\Programs\Python\Python36\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Users\Rominus\AppData\Local\Programs\Python\Python36\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Users\Rominus\AppData\Local\Programs\Python\Python36\lib\http\client.py", line 266, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/Rominus/PycharmProjects/Binance/Skitter_trade_test.py", line 55, in <module>
    bintime = int(client.time()['serverTime'])
  File "C:\Users\Rominus\PycharmProjects\Binance\api.py", line 98, in time
    return self._get('v1/time')
  File "C:\Users\Rominus\PycharmProjects\Binance\api.py", line 62, in _get
    return self._request(endpoint, param, "get")
  File "C:\Users\Rominus\PycharmProjects\Binance\api.py", line 40, in _request
    r = getattr(self.session, http_method)(BinanceAPI.API_URL + endpoint, params=params)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\requests\sessions.py", line 525, in get
    return self.request('GET', url, **kwargs)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\requests\sessions.py", line 512, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\requests\sessions.py", line 622, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\Rominus\PycharmProjects\Binance\venv\lib\site-packages\requests\adapters.py", line 495, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
Rominus
  • 1,181
  • 2
  • 14
  • 29
  • What version of `requests` are you on? This kind of reminds me of [another bug](https://stackoverflow.com/questions/46715586/isinstance-unexpectedly-returning-false) in specific versions of `requests`. – user2357112 Aug 24 '18 at 01:59
  • I'm using `requests` 2.19.1 – Rominus Aug 24 '18 at 02:01
  • 1
    Aside from that, are you sure you're importing `requests.exceptions.ConnectionError` in the file that needs it? It's likely you're using the wrong `ConnectionError`; there's a built-in exception type with the same name. – user2357112 Aug 24 '18 at 02:01
  • I'm definitely importing it to the right file. How would I deal with the name duplication? – Rominus Aug 24 '18 at 02:02
  • @user2357112 (responded to your questions in comments but didn't @ you like I should've) – Rominus Aug 24 '18 at 02:10
  • you could catch that exception and print its type: `except Exception as e: print(type(e))` – georgexsh Aug 24 '18 at 03:25

0 Answers0