Поймать исключение

Ситуация такая: ниже преставлен условный код, который основываясь на respose.status исполняет действия. Но вот в чем проблемма. Если отрубить инет и запустить скрипт, то при его завершении, я получю None и error Cannot connect to host... Вопрос: Подскажите как поймать данное исключение?

async def get_text(url: str) -> str:
    try:
        async with aiohttp.ClientSession() as session:
            async with session.get(url) as resp:
                

                if 100 <= resp.status <= 199:
                    logger.info("INFO")
                elif 200 <= resp.status <= 299:
                    logger.info("SUCSESS")
                    return await resp.text()
                elif 300 <= resp.status <= 399:
                    logger.info("REDIRECT")
                elif 400 <= resp.status <= 499:
                    logger.error("Client error")
                elif resp.status >= 500:
                    logger.error("server error")
                elif resp.start is None:
                    logger.error('resp is NONE')

    except ClientError as ex:
        logger.error(f"There are problems with connection {ex}")
    except TimeoutError as ex:
        logger.error(f"Timeout error {ex}")

Ответы (1 шт):

Автор решения: Daniil Loban

Сразу напишу как искать исключение которое нужно отлавливать, это универсальный метод для поиска. В консоли если присмотреться исключение присутствует:

_create_direct_connection
    raise ClientConnectorError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host python.org:80 
ssl:default [Temporary failure in name resolution]

т.е. вот эта часть aiohttp.client_exceptions.ClientConnectorError до : и есть исключение которое нужно отлавливать.

Вот пример кода:

import aiohttp
import asyncio

async def main():
    try:
      async with aiohttp.ClientSession() as session:
          async with session.get('http://python.org') as response:

              print("Status:", response.status)
              print("Content-type:", response.headers['content-type'])

              html = await response.text()
              print("Body:", html[:15], "...")
    except aiohttp.client_exceptions.ClientConnectorError as err: 
      print(f'Нет интернета {err}')        

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
→ Ссылка