Вероятно, это область, в которой методы программирования различаются, но я бы поднял утверждение, а не выбросил бы здесь исключение.
Утверждения используются для обозначения «того, что никогда не должно происходить»; ошибка программирования, которая может привести к повреждению внутренних данных или серьезному нарушению допущений, в соответствии с которыми был написан код.
Исключения обычно используются для указания неожиданных или необычных ошибок времени выполнения (нехватка места на диске, непредвиденные сетевые ошибки и т. Д.).
Если staffcount
и staff
не синхронизированы, это указывает на ошибку программирования и вероятное повреждение данных, и прерывание программы (с хорошим отслеживанием ошибок) может быть предпочтительнее продолжения с поврежденными данными.
C имеет встроенную функцию assert
, но доступны альтернативы, такие как облегченный Boost.Assert (который я использую) и очень полный Александреску и Торхо библиотека SMART_ASSERT .