Как и в случае с обычными утверждениями, вы должны иметь возможность отключить пользовательские утверждения от с помощью удобного метода глобальной константы или переменной или конструктора класса. Они действительно не принадлежат (активны) в производственном коде или активны по умолчанию в любой библиотеке. То, для чего вы их используете, кажется бесполезной тратой циклов ЦП, даже если вы можете их отключить.
В языках более низкого уровня утверждения очень полезны для выявления очень странных ситуаций, таких как ошибки, возникающие из-за чрезмерно усердной оптимизации, специфичной для компилятора. Например, вы знаете, что в любой разумной вселенной утвержденное условие будет верным. Затем ваш компилятор разрывает структуру пространства-времени, и все меняется. Так что, возможно, они будут полезны, если вы используете что-то вроде PHC или Roadsend для компиляции своего приложения.
Я также видел «чрезмерно безопасный» код (в основном на C), где вход в каждую функцию защищен утверждениями. Я действительно подвергаю сомнению мудрость этого.
Короче говоря, вы хотите, чтобы ваш код не сработал изящно или вовсе не остановился, а не просто остановился, особенно если это зависит от ввода пользователя. Утверждения только сообщают об условиях, которые оцениваются как ложные, они не обрабатывают ошибки.