BEWARE!
Утверждения удаляются во время выполнения, если вы явно не укажете «включить утверждения» при компиляции кода. Утверждения Java не должны использоваться в производственном коде и должны быть ограничены частными методами (см. « Исключение против утверждения» ), поскольку ожидается, что частные методы будут известны и будут использоваться только разработчиками. Также assert
выдает AssertionError, которая Error
не распространяется Exception
и которая обычно указывает на то, что у вас есть очень ненормальная ошибка (например, «OutOfMemoryError», с которой трудно восстановиться, не так ли?), Которую вы не должны лечить.
Удалите флаг «включить утверждения» и проверьте с помощью отладчика, и вы увидите, что вы не будете вмешиваться в вызов вызова IllegalArgumentException ... так как этот код не был скомпилирован (опять же, когда удаляется «ea»)
Лучше использовать вторую конструкцию для открытых / защищенных методов, и если вы хотите что-то, что делается в одной строке кода, есть по крайней мере один из известных мне способов. Я лично использую класс Spring Framework , в Assert
котором есть несколько методов для проверки аргументов и которые выдают «IllegalArgumentException» при сбое. В основном, что вы делаете:
Assert.notNull(obj, "object was null");
... Который на самом деле будет выполнять тот же код, который вы написали во втором примере. Есть несколько других полезных методов, таких как hasText
, hasLength
там.
Я не люблю писать больше кода, чем необходимо, поэтому я счастлив, когда сокращаю количество написанных строк на 2 (2 строки> 1 строка) :-)
obj.hashCode()
Вместо этого я предпочитаю простой ;-)