¡TEN CUIDADO!
Assertions se eliminan en el tiempo de ejecución a menos que especifique explícitamente que " habilitar aserciones "al compilar su código. Las aserciones de Java no deben usarse en el código de producción y deben restringirse a métodos privados (consulte Excepción contra aserción ), ya que se espera que los métodos privados sean conocidos y utilizados solo por los desarrolladores. También assert
lanzará AssertionError que se extiende Error
no Exception
, y lo que normalmente indica que tiene un error muy anormal (como "OutOfMemoryError", del cual es difícil recuperarse, ¿no es así?) no se espera que pueda tratarlo.
Elimine el indicador "habilitar aserciones", verifique con un depurador y verá que no pisará la llamada de excepción IllegalArgumentException ... ya que este código no se ha compilado (de nuevo, cuando se elimina "ea" )
Es mejor usar la segunda construcción para métodos públicos / protegidos, y si quieres algo que se haga en una línea de código, hay al menos una forma que conozco. Personalmente uso el Spring Framework 's Assert
clase que tiene algunos métodos para verificar argumentos y que arroja "IllegalArgumentException" en caso de error. Básicamente, lo que haces es:
Assert.notNull(obj, "object was null");
... que de hecho ejecutará exactamente el mismo código que escribiste en tu segundo ejemplo. Hay algunos otros métodos útiles como hasText
, hasLength
ahí.
No me gusta escribir más código del necesario, así que me alegro cuando reduzco el número de líneas escritas en 2 (2 líneas > 1 línea) :-)