Утверждения должны использоваться для проверки того, что никогда не должно произойти, а исключения должны использоваться для проверки того, что может произойти. Например, функция может делить на 0, поэтому следует использовать исключение, но можно использовать утверждение для проверки того, что жесткий диск внезапно исчезает.
Утверждение хорошо или плохо?
Нет, ни goto, ни assert не являются злом. Но и то, и другое можно использовать не по назначению. Assert предназначен для проверки работоспособности. Вещи, которые должны убить программу, если они неверны.
Почему утверждения плохи?
Утверждения можно использовать для проверки внутренних инвариантов реализации, таких как внутреннее состояние до или после выполнения какого-либо метода и т. д. не оправиться от этого.
Являются ли утверждения хорошей практикой?
Руководство по языку, знакомящее с утверждениями, содержит несколько хороших рекомендаций, которые в основном соответствуют тому, что я только что описал. Да, это хорошая практика. В случае Spring это особенно важно, потому что проверки проверяют настройки свойств и т. д., которые обычно поступают из файлов связывания XML.
В каких случаях полезны утверждения?
Предполагая, что код правильно тестируется, утверждения делают несколько полезных вещей: Обнаруживают малозаметные ошибки, которые в противном случае могли бы остаться незамеченными . Обнаружение ошибок раньше после их возникновения, чем они могли бы быть обнаружены в противном случае. Делать заявлениеоб эффектах кода, который гарантированно верен.