GUAVA
Testando pré condições de forma fácil
Métodos
Cada método tem 3 variantes:
-
Nenhum argumento extra. Todas as exceções são lançadas sem nenhuma mensagem de erro.
-
Um argumento Object extra. Toda exceção é lançada com a mensagem de erro object.toString().
-
Um argumento String extra, com um numero abritrário de argumentos Object. (pense em algo como printf)
Check argument
checkArgument(boolean)
Motivação: Checa se a expressão boolean é true
Uso: validar argumentos dos métodos
Em caso de falha: IllegalArgumentException
Check NOT NULL
checkNotNull(T)
Motivação: Checa se o valor não é nulo
Uso: validar argumentos dos métodos, Retorna o valor diretamente, logo pode ser usado inline
Em caso de falha: NullPointerException
Check state
checkState(boolean)
Motivação: Checa algum estado do objeto
Uso: Não depende dos argumentos do método.
Ex: Um Iterator pode usar essa checagem em um next mesmo sendo chamado antes de qualquer chamada de remove.
Em caso de falha: IllegalStateException
Check ELEMENT INDEX
checkElementIndex(index, size)
Motivação: Checa se o indice é válido na lista, string ou array.
Uso: O intervalo do indice deve estar entre zero e o tamanho exclusive. Você não pode passar o alvo diretamente, mas sim o seu tamanho. Retorna o indice.
Em caso de falha: IndexOutOfBoundsException
Check position INDEX
checkPositionIndex(index, size)
Motivação: Checa se o indice é válido na lista, string ou array.
Uso: O intervalo do indice deve estar entre zero e o tamanho inclusive. Você não pode passar o alvo diretamente, mas sim o seu tamanho.
Retorna o indice.
Em caso de falha: IndexOutOfBoundsException
Check position INDEXes
checkPositionIndexes(start, end, size)
Motivação: Checa se [start, end) é valido no sub intervalo da lista, string ou array do tamanho especificado
Em caso de falha: IndexOutOfBoundsException