Assert выдаст ошибку времени выполнения ( AssertionError ), если его условие ложно. Утверждения предоставляют вам упрощенный способ документирования, проверки и применения критериев правильности вашего кода. Преимущества - это языковой хук для определения и манипулирования этими условиями корректности. Если вы хотите включить или отключить их (есть аргументы относительно того, является ли это хорошей идеей), вы можете сделать это из командной строки JVM. Некоторые комментаторы ниже отмечают, что утверждения по умолчанию отключены, если они не работают в режиме отладки; Моя практика заключается в том, чтобы всегда добавлять «-ea» (включить утверждения) в мои скрипты-оболочки. Даже в коде, чувствительном к производительности, компромисс для меня важен для уверенности в безопасности / правильности, которую я получаю из утверждений. Утверждения в Oracle и Описание API для AssertionError
Обратите внимание на различие между ожидаемыми или неожиданными сбоями (исключениями), которые могут находиться вне вашего контроля, и ошибками утверждений - ошибки подтверждений документируют предположения программиста и указывают на неверную программу, а не на неожиданное внешнее условие или ожидаемое исключительное условие. Если возникает ошибка подтверждения, интерпретация заключается в том, что программист неправильно понял или неправильно выразил программу , а не другие источники ошибок или ошибок.
На практике я использую его для документирования очевидных или неочевидных допущений, которые я делаю, и инвариантов, которые я хочу применять при создании (особенно частного / внутреннего) кода, чтобы было ясно для меня и других, почему эти допущения сделаны, где они сделаны и подтверждены ли они. Гораздо лучше, чем комментарии к тому же эффекту. Это (маленький) шаг к Проектирование по контракту .
Действующий элемент Java # 38 «Проверка параметров на достоверность» ( Google Книги , Amazon.com ) предоставляет полезную информацию о различии между проверкой параметров и надлежащим использованием утверждений.
Относится к SO: ( Включение утверждений в NetBeans ), ( Утверждения и исключения ), ( Почти в двух экземплярах, запрос примеров ), ( Плохо названный, но очень похожий контент )