Утверждения Java
Утверждения Java
В этом руководстве мы узнаем об операторе утверждения Java (утверждениях Java) с помощью примеров.
Утверждения в Java помогают обнаруживать ошибки путем тестирования кода, который мы считаем верным.
Утверждение делается с использованием 09
ключевое слово.
Его синтаксис:
05
Здесь 10
является логическим выражением, которое мы предполагаем истинным при выполнении программы.
Включение утверждений
По умолчанию утверждения отключены и игнорируются во время выполнения.
Чтобы включить утверждения, мы используем:
15пре>ИЛИ
22Когда утверждения включены и условие равно
29
, программа выполняется нормально.Но если условие оценивается как
<час>31
пока утверждения включены, JVM выдает42
, и программа немедленно останавливается.Пример 1:утверждение Java
36Вывод
44Мы получаем приведенный выше вывод, потому что в этой программе нет ошибок компиляции и по умолчанию утверждения отключены.
После включения утверждений мы получаем следующий вывод:
53<час>Другая форма оператора утверждения
65В этой форме оператора утверждения выражение передается конструктору
55
. объект. Это выражение имеет значение, которое отображается как подробное сообщение об ошибке, если условие равно69
. .Подробное сообщение используется для захвата и передачи информации об ошибке утверждения, чтобы помочь в отладке проблемы.
<час>Пример 2:утверждение Java с примером выражения
77Вывод
84Как мы видим из приведенного выше примера, выражение передается конструктору
79
объект. Если наше предположение равно81
и утверждения включены, возникает исключение с соответствующим сообщением.Это сообщение помогает диагностировать и исправить ошибку, вызвавшую сбой утверждения.
<час>Включение проверки для определенных классов и пакетов
Если мы не предоставим никаких аргументов переключателям командной строки утверждения,
94Это включает утверждения во всех классах, кроме системных классов.
Мы также можем включить утверждение для определенных классов и пакетов, используя аргументы. Аргументы, которые могут быть предоставлены этим переключателям командной строки:
Включить утверждение в именах классов
Чтобы включить утверждение для всех классов нашей программы Main,
101Чтобы включить только один класс,
119Это позволяет утверждать только в
93
в102
программа.
Включить утверждение в именах пакетов
Чтобы включить утверждения для пакета
118
и только его подпакеты,124Включить утверждение в безымянных пакетах
Чтобы включить утверждение в безымянных пакетах (когда мы не используем оператор пакета) в текущем рабочем каталоге.
138Включить утверждение в системных классах
Чтобы включить утверждение в системных классах, мы используем другой переключатель командной строки:
141ИЛИ
154Аргументы, которые могут быть переданы этим переключателям, одинаковы.
<час>Отключение утверждений
Чтобы отключить утверждения, мы используем:
160ИЛИ
173Чтобы отключить утверждение в системных классах, мы используем:
181ИЛИ
191Аргументы, которые можно передать при отключении утверждений, такие же, как и при их включении.
<час>Преимущества утверждения
<час>
- Быстрое и эффективное обнаружение и исправление ошибок.
- Проверки утверждений выполняются только во время разработки и тестирования. Они автоматически удаляются в производственном коде во время выполнения, чтобы не замедлять выполнение программы.
- Это помогает удалить шаблонный код и сделать код более читабельным.
- Рефакторинг и оптимизация кода с большей уверенностью в том, что он работает правильно.
Когда использовать утверждения
1. Недоступные коды
Недостижимые коды — это коды, которые не выполняются, когда мы пытаемся запустить программу. Используйте утверждения, чтобы убедиться, что недостижимые коды действительно недостижимы.
Возьмем пример.
206Возьмем еще один пример оператора switch без регистра по умолчанию.
214Приведенный выше оператор switch указывает, что дни недели могут быть только одним из 7 указанных выше значений. Отсутствие случая по умолчанию означает, что программист считает, что один из этих случаев всегда будет выполняться.
Однако могут быть некоторые еще не рассмотренные случаи, когда предположение на самом деле неверно.
Это предположение следует проверить с помощью утверждения, чтобы убедиться, что случай переключения по умолчанию не достигнут.
224Если деньнедели имеет значение, отличное от действительных дней,
<час>121
бросается.2. Документирование предположений
Чтобы задокументировать лежащие в их основе предположения, многие программисты используют комментарии. Возьмем пример.
232Вместо этого используйте утверждения.
Комментарии могут устаревать и рассинхронизироваться по мере роста программы. Однако мы будем вынуждены обновить
134
заявления; в противном случае они могут не работать и при допустимых условиях.246<час>Когда не следует использовать утверждения
1. Проверка аргументов в общедоступных методах
Аргументы в общедоступных методах могут быть предоставлены пользователем.
Таким образом, если для проверки этих аргументов используется утверждение, условия могут не сработать и привести к
148
.Вместо использования утверждений пусть это приводит к соответствующим исключениям во время выполнения и обрабатывает эти исключения.
<час>2. Для оценки выражений, влияющих на работу программы
Не вызывайте методы и не оценивайте исключения, которые впоследствии могут повлиять на работу программы в условиях утверждения.
Возьмем пример списка будние дни который содержит названия всех дней недели.
255Здесь мы пытаемся удалить элементы
152
и161
из ArrayList дни недели .Если утверждение включено, программа работает нормально. Однако если утверждения отключены, элементы из списка не удаляются. Это может привести к сбою программы.
Вместо этого присвойте результат переменной, а затем используйте эту переменную для утверждения.
260Таким образом, мы можем гарантировать, что все выходные удаляются из будних дней независимо от того, включено или отключено утверждение. В результате это не повлияет на работу программы в дальнейшем.
java