Ответ 1
Да, да. Переполнение значащих целых чисел - это поведение undefined, поэтому может случиться что угодно (включая исключение).
В качестве побочного примечания, я должен сказать, что это вряд ли произойдет (хотя и определенно возможно) для большинства реализаций; как стандарт С++ 11 упоминает в примечании к пункту 5/4:
Если во время оценки выражения результат не определяется математически или нет в диапазоне представляемые значения для его типа, поведение undefined. [ Примечание: большинство существующих реализаций С++ игнорировать целые переполнения. Обработка деления на ноль, формирование остатка с использованием делителя нуля и все исключения с плавающей запятой различаются между машинами и обычно регулируются библиотечной функцией. -end note]
Однако, как упоминает hvd в комментариях, некоторые реализации позволяют предоставлять настраиваемые обработчики для переполнения целого числа, и эти обработчики могут бросать.