Тут момент в том, что смысла в этом нет. Сервисы, которые будут работать со шлюзом работают именно с интерфйесом. И пихать в новый шлюз кастомное исключение, которое под каким то интерфейсом, зачем?
Допустим так. Есть возможность авторизоваться через соцсети. Согласен, у каждой соцсети будет своя реализация библиотеки. Поднимемся уровнем повыше. В приложении у нас скорее всего будет фабрика, в которую мы передадим название соцсети и эта фабрика вернёт нам обёртку, которая умеет работать с конкретной библиотекой. Обёртка будет соответствовать интерфейсу и будет уметь обрабатывать ошибки конкретной соцсети: логировать их и передавать на следующий уровень. Именно в этом месте множество оберток и будут давать эти исключения. ( Соответствующие общему предку и интерфейсу) и наше приложение поймет, что что-то пошло не так именно с авторизацией через соцсети.