2010-03-02 25 views
19

En Java, hay una diferencia semántica entre el uso "ilegal " (como en IllegalArgumentException) frente a "no válido " (como en javax.activity.InvalidActivityException)?Java convenciones de nomenclatura de Excepción

Durante el curso de una misión se vio la utilidad para escribir una subclase de IllegalArgumentException para representar una serie de caracteres de entrada que no se puede con token, y me pregunto si la convención dice que use InvalidTokenException o IllegalTokenException.

La única diferencia que puedo encontrar hasta ahora es que java.lang parece preferir "Ilegal", mientras que javax.* prefiere "Inválido". Sin embargo, también existe java.security.InvalidParameterException que es una subclase de IllegalArgumentException.

+0

@ehdv upated mi respuesta – stacker

Respuesta

8

Puede tener legal uso de una API y aún tener datos no válidos; es todo semántica.

+2

Pero IllegalArgumentException parece cubrir tanto el uso ilegal de API como datos no válidos. – ehdv

-1

AFAIK, IllegalArgumentException solo debe utilizarse cuando desee señalar el uso incorrecto de una llamada al método API. Lo que parece que está describiendo es un escenario en el que la API se ha utilizado incorrectamente, por lo que creo que una excepción IllegalArgumentException sería la mejor opción.

+0

Quizás quiso decir 'IllegalStateException' para la segunda" IllegalArgumentException "? Si no, estoy realmente confundido ... – ehdv

+1

AFAIK eso no es lo que el OP está pidiendo. –

+0

@DR - usted estaría en lo correcto. Gracias por la mejora de formato, por cierto. – ehdv

2

javax.activity.InvalidActivityException se hereda de java.rmi.RemoteException y es probable que no desee esta dependencia. Ver también Javadoc

EDITAR Ambos inválidos e ilegales se utilizan como sinónimos, no hace ninguna diferencia en semántica, solo los problemas técnicos mencionados anteriormente.

EDITAR: De Postgres Documentation Sección 45.3.14. Palabras difíciles de evitar:

Ilegal. "Ilegal" significa una violación de la ley, el resto es "inválido". Mejor aún, di por qué no es válido.

+1

Está hablando de nombres, no extendiendo la InvalidActivityException. –

Cuestiones relacionadas