@itforge Попробовал и сделал вывод, что сам не совсем верно помню иерархию исключений. Посмотрел в документацию и увидел, что самый базовый класс исключений идет BaseException, после него Exception и только после остальные, но KeyboardInterrupt на том же уровне, что и Exception, по этому он и не ловится
@itforge боюсь вы неправы, так как ваша конструкция тоже KeyboardInterrupt ловит. Вообще на хабре как то была схема (иерархия) исключений Python. Советую ее распечатать себе.
Это очень вредно ловить все ошибки, советую отвыкнуть от этого и чем быстрее тем лучше для вас и начать ловить только те ошибки, которые хотите поймать. В данной ситуации вы хотели продолжать работу скрипта далее если только такого url не существовало, поэтому советую открыть интерпретатор и попробовать urllib обратиться к не существующему, посмотреть какое исключение он кидает и ловить только его, как сделали комментаторы выше.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.