Когда я писал на C ++, я использовал утверждения гораздо больше, чем на Java.Я использую их не так часто, потому что они мне не нужны так часто, как раньше.Многие из ошибок C ++, которые я бы попытался уловить с помощью утверждений, больше не являются проблемой в Java.
Сказав это, утверждения очень ценны, но многие люди не используют их часто, потому что онипонять их.Я слышал, что люди жалуются, что они выдают ошибку вместо исключения.Я также слышал вопрос: почему бы вам не использовать исключение и обрабатывать дело вместо использования assert?
Мой ответ на оба вопроса одинаков.Утверждения не должны отлавливать случаи, которые вы ожидаете увидеть в работающем приложении.Целью утверждений является выявление ошибок.Вы должны использовать их только там, где единственный способ «обработать» их - вернуться и исправить код.Вот почему они не генерируют исключения - вы не хотите, чтобы они были частью вашей общей обработки исключений.
Что касается их включения, моя IDE по умолчанию настроена на их включение.Итак, для внутреннего тестирования я всегда знаю, что они включены.
Вот пример, где единственное, что нужно использовать - assert: я работал над большим проектом Swing, где первоначальные кодеры не понимали этого.пользовательский интерфейс может быть обновлен только из потока событий, что привело к всевозможным ошибкам.Поэтому я вставил это утверждение во многих местах, где все было странно: assert EventQueue.isDispatchThread ();Если это утверждение сработало, мы работали не с того потока, и разработчики должны были быть уведомлены, чтобы они могли переместить код в нужный поток.Нет никакого способа справиться с этим в рабочем приложении.