Отвечаю по C#. Исключение должно выбрасываться в любом случае, если метод не может выполнить задачу, которая ему назначена. Метод CreateUser() не смог создать пользователя? Исключение! Метод Connect() не смог подключиться за заданный интервал времени? Исключение. Если не ошибаюсь, так писал Рихтер.