Cuidado!
As asserções são removidas no tempo de execução, a menos que você especifique explicitamente para "habilitar asserções" ao compilar seu código. As asserções Java não devem ser usadas no código de produção e devem ser restritas a métodos privados (consulte Exceção vs Asserção ), pois espera-se que os métodos privados sejam conhecidos e usados apenas pelos desenvolvedores. Também assert
lançará AssertionError que Error
não se estende Exception
e que normalmente indica que você tem um erro muito anormal (como "OutOfMemoryError", difícil de recuperar, não é?) Que você não deve tratar.
Remova o sinalizador "enable assertions" e verifique com um depurador e você verá que não pisará na chamada de lançamento IllegalArgumentException ... já que esse código não foi compilado (novamente, quando "ea" for removido)
É melhor usar a segunda construção para métodos públicos / protegidos e, se você quiser algo que seja feito em uma linha de código, há pelo menos uma maneira que eu conheço. Eu pessoalmente uso do Spring Framework 's Assert
classe que tem alguns métodos de controlo argumentos e que lance 'IllegalArgumentException' em caso de falha. Basicamente, o que você faz é:
Assert.notNull(obj, "object was null");
... Que de fato executará exatamente o mesmo código que você escreveu no seu segundo exemplo. Existem alguns outros métodos úteis, tais como hasText
, hasLength
lá dentro.
Não gosto de escrever mais código do que o necessário, por isso fico feliz quando reduzo o número de linhas escritas em 2 (2 linhas> 1 linha) :-)
obj.hashCode()
;-)