¡TENER CUIDADO!
Las aserciones se eliminan en tiempo de ejecución a menos que especifique explícitamente "habilitar aserciones" al compilar su código. Las aserciones de Java no se deben usar en el código de producción y se deben restringir a métodos privados (consulte Excepción frente a aserción ), ya que se espera que los métodos privados sean conocidos y utilizados solo por los desarrolladores. También assert
arrojará AssertionError que Error
no se extiende Exception
, y que normalmente indica que tiene un error muy anormal (como "OutOfMemoryError" que es difícil de recuperar, ¿no es así?) Que no se espera que pueda tratar.
Elimine el indicador "habilitar aserciones" y verifique con un depurador y verá que no pisará la llamada de lanzamiento IllegalArgumentException ... ya que este código no se ha compilado (nuevamente, cuando se elimina "ea")
Es mejor usar la segunda construcción para métodos públicos / protegidos, y si desea hacer algo en una línea de código, hay al menos una forma que conozco. Yo personalmente uso la primavera Marco 's Assert
clase que tiene unos métodos para comprobar que los argumentos y tirar 'IllegalArgumentException' en caso de fallo. Básicamente, lo que haces es:
Assert.notNull(obj, "object was null");
... que de hecho ejecutará exactamente el mismo código que escribió en su segundo ejemplo. Hay algunos otros métodos útiles, como hasText
, hasLength
allí.
No me gusta escribir más código del necesario, así que estoy contento cuando reduzco el número de líneas escritas en 2 (2 líneas> 1 línea) :-)
obj.hashCode()
lugar ;-)