The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
В Java существует два основных способа проверки ситуации и выдачи сообщения о неожиданном событии. Это либо исключение, либо утверждение. Технически они почти одинаковы, но есть некоторые небольшие различия. Я считаю, что исключения - это правильный путь во всех ситуациях, и утверждения не должны использоваться. Вот почему.
Посмотрим, что происходит, когда происходит срабатывание утверждения. Предположим, что это наш код:
Сохраните этот код в Main.java
и скомпилируйте:
Then run it:
$ java Main
Hello, world!
Утверждение не было вызвано. Оно было проигнорировано. Теперь запустите его с флагом -enableassertions
.
Это первое отличие между исключениями и утверждениями. Исключения всегда будут выбрасываться, тогда как утверждения не включены по умолчанию. Они предполагаются включенными во время тестирования и выключенными в производстве. Утверждение вызывает исключение времени выполнения AssertionError
. Но подождите; это не RuntimeException
. Оно наследуется от класса Error
, который наследуется от Throwable
. Это второе отличие. Я не знаю о каких-либо других отличиях.
Я бы рекомендовал не использовать утверждения … никогда. Просто потому, что я сильно верю в подход “Fail Fast”. Я считаю, что ошибки должны быть видимыми не только во время тестирования, но и в производстве. Более того, я считаю, что сделать ошибки видимыми в производстве очень важно, если вы хотите достичь высококачественного продукта.
Таким образом, без утверждений. Они просто недостаточно гибкий и устаревший инструмент в Java (и некоторых других языках).
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 13:32