Python: Must non-built-in exceptions be imported in order to catch them?
Question: I'm trying to catch some exceptions thrown by the `requests` library, with the
following try-except block:

    
    
     try:
            get = requests.get((requester.batchesUrl)+str(id)+'/', auth=requester.auth)
     except (ConnectionRefusedError, ConnectionError, MaxRetryError) as e:
            print("CAUGHT ECONNECTION ERROR")
            raise type(e)(str(e) + "Additional Info: Method couldn't connect to website, check that your server is running"
                          ).with_traceback(sys.exc_info()[2])
    

But instead of catching the exceptions and adding `"Additional Info:"` to the
args, I get `NameError: global name 'MaxRetryError' is not defined.` Now I
know MaxRetryError is an exception in `urllib3.exceptions.MaxRetryError`. Must
I import these non-built-in exception in order to catch them? This seems
verbose to me considering the number of possible exceptions one is likely to
need to watch out for.

**Running:** Python 3.3, Windows 7.


Answer: You must **always always always** have a name in an accessible scope before
you can refer to it without throwing an exception. If that means importing,
then so be it.

